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

⟦88581dd3b⟧ TextFile

    Length: 9216 (0x2400)
    Types: TextFile
    Names: »getexterntx«

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 predit text           * page 1    3 03 80, 15.14
0 1 2 3 4 5 6 7 8 9 ;  

comment case 14, getextern
create name leverer et workname til workfile
workfile creater et non_area entry
;  

begin
  integer        i, n, t, firstm, procnumbers, shiftv, scope,cskift;  
  boolean        auto, from, copy, gbtx, not_clear;  
  real    array  contra, comp, devi, myst(1:2);  
  integer array  zdes(1:20);  
  integer array  tail(1:10), headm(1:17), alpha(0:255);  
  long    array  save(1:128);  
  zone           zbr, zmulti, zm(128, 1, stderror);  
  integer field  word, inf;  
  real    array field  name;  
  long    array field  zn;  


  procedure stop(s);  string s;  
  system(9, 0*write(out, <:<10>***:>, s, nl, 1), <:getextern:>);  

  comment procedure for transfer of procnames;  
  procedure transproc;  
  begin
    integer i;  

    repeat
    i := read_string(zbr, save, 1);  
    write(zmulti, save);  
    until i > 0;  

    set_position(zbr, 0, 0);  

  end;  

  procedure shiftchar(ch);  
  value  ch;  integer  ch;  
  begin
    contra.inf := contra.inf + ch shift shiftv;  
    shiftv := shiftv - 8;  
    if shiftv = -8 then
    begin
      inf := inf + 2;  shiftv := 16;  
    end;  
  end;  

\f



comment predit text           * page 2    3 03 80, 15.14 
0 1 2 3 4 5 6 7 8 9 ;

  name        := 6;  
  first_m     := 3;  
  zn          :=
  word        := 2;  
  shiftv      := 1;  
  n           :=
  procnumbers :=
  scope       := 0;  
  devi(1)     :=
  devi(2)     := real <::>;  
  from        :=
  gbtx        :=
  auto        := false;  

  if readparam(comp) <> -1 then
  _  stop(<:param error - left hand:>);  

  for i := readparam(contra) while i <> 0 and n < 3 do  
  begin
    if i = 2 then
    begin
      n := n + 1;  
      t := nr_string(t, 4, string(contra(1)), case t of (
      _    <:auto:>, <:scope:>, <:from:>, <:gbtx:>)) - 1;  
      if t = 0 then n := 4;  
    end
    else

\f



<*      predit text           * page 3    3 03 80, 15.14 
0 1 2 3 4 5 6 7 8 9 *>

    if i = 4 then
    begin
      case (if t < 4 then t else 3) of 
      begin
        begin <* auto *>
          auto   := contra(1) = real <:yes:>;  
          firstm := firstm + 2;  
          if auto then stop(<:auto not implemented:>);  
        end;  
        begin
          if shiftv = 1 then
          begin
            scope := nr_string(scope, 4, string(contra(1)), 
            _        case scope of (
            _        <:proj:>, <:user:>, <:login:>, <:clear:>)) -1;  
            if scope = 0 then
            _  stop(<:param error illegal scope:>);  
            firstm := firstm + 2;  
          end
          else
          if shiftv = 2 then
          begin
            devi(1) := contra(1);  
            devi(2) := contra(2);  
            firstm  := firstm + 1;  
          end;  
          shiftv := shiftv + 1;  
        end;  
        begin
          from    := t = 3;  
          gbtx    := t = 4;  
          myst(1) := contra(1);  
          myst(2) := contra(2);  
        end;  
      end;  
    end
    else
    stop(<:param error illegal sequence:>);  
  end;  

  not_clear := scope <> 4;  

  for i := readparam(contra) while i <> 0 do;  
  for i := 1 step 1 until firstm do readparam(contra);  

  if -, from and -, gbtx and not_clear then
  stop (<:param error not getextern call:>);  

  if not_clear then
  begin
    open (zm, 4, string pump (myst), 0);  
    if monitor (76, zm, 0, headm) > 0 or headm(16) shift (-12) <> 10 then
    stop (<:contract file does not exist:>);  
inrec6(zm,512);
n := zm(128) extract 24;
cskift := if zm.word shift (-12) = (n+14)//15 then
_         -12 else -6;
setposition(zm, 0, 0);
  end;  

\f



comment predit text           * page 4    3 03 80, 15.14
0 1 2 3 4 5 6 7 8 9 ;  

  open (zbr, 4, <::>, 0);  
  tail (1) := 1;  
  for t := 2 step 1 until 10 do tail(t) := 0;  
  i := monitor(40)create entry:(zbr, 0, tail);  
  if i <> 0 then stop(<:temp work store not created:>);  
  get_zone(zbr, zdes);  
  comment file for compresstext created;  

  if scope = 0 then
  begin
    scope := if fp_mode(1) then 1 else
    _        if fp_mode(2) then 2 else
    _        if fp_mode(3) then 3 else 0;  
  end;  

  open(z_multi, 4, string pump(comp), 0);  
  tail(1) := 1;  
  for t := 2 step 1 until 10 do tail(t) := 0;  
  i := monitor (40) create entry:(zmulti, 0, tail);  
  if i <> 0 and i <> 3 then
  stop(<:resultfile create trouble:>);  

  if i = 3 then
  begin
    monitor(48)remove entry:(zmulti, 0, tail);  
    i := monitor(40)create entry:(zmulti, 0, tail);  
    if i <> 0 then stop(<:resultfile create trouble:>);  
  end;  

  if monitor(50)permanent entry:(zmulti, 2, tail) <>0 then
  stop(<:no login resources to resultfile:>);  

  indateproc(zmulti);  

  comment entry for multiprogram created;  

  for i := 0 step 1 until 127 do
  _   alpha(i) := 6 shift 12 add i;  
  alpha(0)   :=   
  alpha(127) := 0;  
  alpha(25)  := 8 shift 12 add 25;  
  intable(alpha);  

  for i := readparam(contra) while i <> 0 do
  begin
    if i <> 2 then stop(<:param error illegal sequence:>);  

    if from then
    begin
      i := readparam(comp);  
      if i <> 4 then stop(<:param error illegal sequence:>);  
    end  
    else

\f



<*       predit text           * page 5    3 03 80, 15.14
0 1 2 3 4 5 6 7 8 9 *>

    begin <* gbtx *>

      comp(1)   := contra(1);  
      comp(2)   := contra(2);  
      contra(1) :=
      contra(2) := real <::>;  
      in_f      :=  2;  
      shift_v   := 16;  
      for t := comp.inf shift (-shiftv) extract 8 while t <> 0 do
      _   shiftchar(t);  
      shiftchar(116);  <* t *>
      shiftchar(120);  <* x *>

    end of gbtx;  

    if not_clear then
    begin

      copy := false;  
      setposition(zm, 0, 0);  

      for t := 1 step 1 until n do
      begin
        inrec_6(zm, 34);  
        if zm.name(1) = contra(1) and
        _  zm.name(2) = contra(2) then  
        begin
          copy   := true;  
          firstm := if zm.word shift(cskift) = 0 then zm.word else 
          _         zm.word shift(cskift);  

          write(zbr, string pump(comp), sp, 1, <:,<10>:>);  
          procnumbers := procnumbers + 1;  

          if procnumbers = 1 then
          begin
            if devi(1) <> real <::> then
            _  write(zmulti, nl, 2, string pump(comp), 
            _        <: = set 1 :>, string pump(devi));  
            write(zmulti, nl, 2, string pump(zdes.zn), 
            <: = set bs :>, string pump(headm.name), nl, 1);  
          end;  

          write(zmulti, nl, 2, string pump(zdes.zn), <: = changeentry :>, 
          string pump(zdes.zn), sp, 1, string pump(headm.name), 
          sp, 1, string pump(zdes.zn), sp, 1, 
          string pump(zdes.zn), sp, 1, firstm, nl, 1, 
          <:i :>, string pump(zdes.zn), nl, 1);  

          t := n;  

        end ifcop;  
        comment one procedure transferred  with warning;  

      end nstep;  

      if -, copy then
      begin
        write(out, nl, 1,  string pump(contra), <: not in textstorage:>);  
        setfpmode(0, true);  
      end;  

\f



comment predit text           * page 6    3 03 80, 15.14
0 1 2 3 4 5 6 7 8 9 ;  

    end
    else
    begin
      procnumbers := procnumbers + 1;  
      write(zbr, string pump(comp), sp, 1, <:,:>, nl, 1);  
    end;  

  end pnulpar;  

  write(zbr, nl, 2, em, 1);  
  setposition(zbr, 0, 0);  

  if not_clear then
  begin

    write(zmulti, ff, 1, nl, 2,  
    _     <: if 0.no :>, nl, 1, <:(:>, nl, 1);  
    for t := readchar(zbr, i) while i <> 32 do
    _  outchar (zmulti , i);  
    write(zmulti, <:  = compresslib <44><10>:>);  
    transproc;  
    if scope > 0 then
    begin
      write(zmulti, ff, 1, nl, 2, <: if 0.no :>, nl, 1, <:(:>, nl, 1, 
      _     <:scope :>, case scope of (<:project:>, <:user:>, <:login:>), 
      _     <:,:>, nl, 1);  
      transproc;  
      write(zmulti, <:):>, nl, 2);  
    end;  
    write (zmulti, <:<10> <12><10> lookup , <10>:>);  
    transproc;  
    write(zmulti, <:<10> message :>, procnumbers, 
    <: procedures translated<10><41>:>);

  end
  else
  begin  comment clear;  

    write(zmulti, nl, 3, <:scope temp,:>, nl, 1);  
    transproc;  

    write(zmulti, nl, 3, <:clear temp,:>, nl, 1);  
    transproc;  

    write(zmulti, nl, 3, <:if ok.yes :>, nl, 1, 
    _     <:message :>, procnumbers, <: procedures :>, 
    _     <:cleared:>);

  end;  

  write(zmulti, nl, 2, <:clear temp :>, string pump(zdes.zn),
  <:<10>end<10>finis<10><25>:>);
  close(zmulti, true);  
  close(zm, true);  
  <*remove entry*>
  monitor(48, zbr, 1, zdes);  
  close(zbr, true);  

end case 14, getextern;  
▶EOF◀