DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦2d246e1df⟧ TextFile

    Length: 4608 (0x1200)
    Types: TextFile
    Names: »listerrortx«

Derivation

└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ.  Detaljer om "HC8000" projekt.
    └─⟦0364f57e3⟧ 
        └─⟦baac87bee⟧ »gi« 
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ.
    └─⟦4334b4c0b⟧ 
        └─⟦baac87bee⟧ »gi« 
            └─⟦this⟧ 

TextFile



comment listerrortx           * page 1   27 04 79,  9.19
0 1 2 3 4 5 6 7 8 9 ;  

begin

  comment

  Listerror er et program, som kan liste vilkårlige linier fra
  en algol kildetekst (program eller extern procedure).
  Sammen med linierne listes også de tilsvarende boss - og algol -
  numre.

  Kald af program:
  ----------------
  _                              1                   50
  listerror (in.<input_file name>)  lines(.<algol_nbr>)
  _                              1                    1

  Eks.  listerror in.readmaptx lines.45.46.57.68.101

  Fra <readmaptx> listes nu teksten fra ovenstående linier samt
  disse liniers samhørende boss- og algolnumre.

  Programmør Erik Hansen, Topografisk Afdeling 22-01-79  ;  

  integer t, val, nbr, algol_nr, int, pointer, boss_nr;  
  integer array write_line, kind(1:50), table(0:127);  
  real array param, aktion(1:2);  
  long array input_file(1:2), la(1:50);  
  zone zn(128*2, 2, stderror);  
  boolean continue, ok;  

  continue := true;  
  algol_nr := 1;  
  pointer  := 1;  
  boss_nr  := 0;  
  nbr      := 0;  
  val      := 0;  

\f



comment listerrortx           * page 2   27 04 79,  9.19
0 1 2 3 4 5 6 7 8 9 ;  

  <******** R E A D  F P - P A R A M ********>
  for int := read_param(param) while int <> 0 do
  case int + 2 of
  begin
    val := write(out, nl, 1, 
    <:***list<95>error FP-syntax, outputfile not allowed:>);  

    <* end of parameter list *> ;  

    <* <space><integer> *>
    val := write(out, nl, 1, 
    <:***list<95>error FP-syntax, :>, round param(1));  

    <* <space><text> *>
    to_from(aktion, param, 8);  

    <* .<integer> *>
    if aktion(1) shift (-24) shift 24 = real<:lin:> then
    begin
      nbr := nbr + 1;  
      write_line(nbr) := round param(1);  
    end  else
    val := write(out, nl, 1, <:***list<95>error FP-syntax, :>, 
    string pump(aktion), <:.:>, round param(1));  

    <* .<text> *>
    if aktion(1) shift (-32) shift 32 = real<:in:> then
    to_from(input_file, param, 8)  else
    val := write(out, nl, 1, <:***list<95>error FP-syntax, :>, 
    string pump(aktion), <:.:>, string pump(param));  
  end;  <******* R E A D  F P - P A R A M ********>

  if val <> 0 then
  system(9, 0*write(out, nl, 1, 
  <:***list<95>error FP-problems:>), <:<10>stopped:>);  

  la(1) := longzero;  <* ==> scope(1) := longzero *>
  val := lookup_proc(la, input_file, kind <* tail *> );  
  if val <> 0 then
  system(9, 0*write(out, nl, 1, 
  <:***list<95>error, input<95>file problems:>, nl, 1, 
  <:lookup<95>proc = :>, <<dd>, val), <:<10>stopped:>)  else
  open(zn, 4, inputfile, 0);  

  while continue do
  begin
    int := read_all(zn, la, kind, 1);  
    boss_nr := boss_nr + 10;  
    for t:=1 step 1 until int do
    if la(t) = long<:begin:> or
    _  la(t) shift (-8) shift 8 = long<:exter:> then
    continue := false;  
  end;  

\f



comment listerrortx           * page 3   27 04 79,  9.19
0 1 2 3 4 5 6 7 8 9 ;  

  <* redefinering af alfabetet *>
  stdtable(table);  
  for int:=32 step 1 until 125 do
  table(int) := 6 shift 12 + int;  
  table(10)  := 8 shift 12 + 0;  
  intable(table);  

  continue := true;  
  while continue do
  begin
    int := read_all(zn, la, kind, 1);  

    boss_nr := boss_nr + 10;  

    ok := false;  
    if t > 1 then
    for t:=1, t+1 while t<=(int-1) and -, ok do
    for val:=-40 step 8 until 0 do
    if la(t) shift val extract 8 <> 32 and
    _  la(t) shift val extract 8 <> 0  and
    _  la(t) shift val extract 8 <> 95 then ok := true;  

    if la(int) = 12 <* ff *> then
    boss_nr := ((((boss_nr//1000) + 1) * 1000) - 10)  else
    if ok then algol_nr := algol_nr + 1;  
    if write_line(pointer) = algol_nr then
    begin
      write(out, nl, 1, <<ddddd>, boss_nr, <<ddddd>, algol_nr, 
      _          sp, 1, la);  
      pointer := pointer + 1;  
    end;  

    if pointer > nbr then continue := false;  
    readchar(zn, val);  
    if val = 25 then continue := false  else
    repeatchar(zn);  
  end;  
  close(zn, true);  
end;  

▶EOF◀