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

⟦3d335d906⟧ TextFile

    Length: 3840 (0xf00)
    Types: TextFile
    Names: »treadjob«

Derivation

└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦0b817e319⟧ »ctramos« 
            └─⟦this⟧ 

TextFile

<*read job file 1982.01.05
Anders Lindgård*>
procedure read_job_file(ct,bufref,A,pz);
integer array field ct,bufref;
integer array A;
zone pz;
begin
integer i,j,res,char,c,error;
boolean batch;
integer array field t,des,cpda;
integer array cur(1:qdescsize//2),ht(1:17);
long array file(1:3);
long array field name;

t:=14;
batch:=childtable.ct.ctbatch>0;
des:=childtable.ct.ctref;
for j:=qdescsize//2 step -1 until 1 do cur(j):=
  if batch then q.des(j) else condesc.des(j);
<*+2*>
if testop(9) then write(pz,"nl",1,<:read job file called :>,
     if batch then <: batch :> else <: on line :>);
<*-2*>
name:=8+8;
for i:=1,2 do file(i):=core.bufref.name(i);
<*+2*>
if testop(9) then write(pz,file);
<*-2*>
cpda:=childtable.ct.ct_childpda;
cur.conprocin:=cur.conprocout:=cur.contermpda;
error:=0;
if -,readusercat(childtable.ct.ct_jobname,cur,false,pz) then error:=8 else
begin
  <*this must allways be the case*>
<*+2*>
  if testop(9) then
  begin
  write(pz,"nl",1,<:child found in usercat :>,childtable.ct.ctjobname);
  setposition(pz,0,0);
  end;
<*-2*>
  std_claim(cur);
  std_bs(cur,pz);
  name:=cpda+2;
  for i:=1,2 do cur.conprocname(i):=core.name(i);
  set_base(core.cpda.stdbaseref(1),core.cpda.stdbaseref(2));
  res:=lookup_head_and_tail(file,ht);
  cur.qremovejobfile:=0;
<*+2*>
  if testop(9) then disable
  begin
    write(pz,"nl",1,<:lookup :>,file);
    listentry(pz,ht);
    setposition(pz,0,0);
  end;
<*-2*>
  if res<>0 or ht.t(1)<1 then error:=3 else
  begin
  if ht(1) extract 3<2 then
  begin
    permanent_entry(file,2);
    set_entry_base(file,cur.conloweruser,cur.conupperuser);
    cur.q_remove_job_file:=1;
  end;
  wait(zsem);
  setbase(cur.conloweruser,cur.conupperuser);
  createareaprocess(file);
  res:=reserve_process(file);
  if res>0 then error:=3 else
  begin
  open(z,4,file,0);
  name:=8+4;
  for i:=1,2 do cur.qprinter(i):=0;
  if core.bufref.name(1)<>long <::> then
  begin
     cur.qprinter(1):=core.bufref.name(1);
<*+2*>
   if testop(9) then disable
   begin
     write(pz,"nl",1,<:printer :>,cur.qprinter,"sp",2,cur.conoutname);
     setposition(pz,0,0);
   end;
<*-2*>
  end;
  char:='sp';
  while char='sp' or char='nl' do readchar(z,char);
<*+2*>
  if testop(9) then disable
  begin
    write(pz,"nl",1,<:char :>,char); setposition(pz,0,0);
  end;
<*-2*>

  cur.q_max_time:=b_std_time;
  error:=0;
  if char=';' then
  begin
<*+2*>
    if testop(9) then disable
    begin
      write(pz,"nl",1,<:call readsubmit:>); setposition(pz,0,0);
    end;
<*-2*>
    if readsubmit(z,pz,cur,true) then
    begin
      close(z,true);
      res:=job_to_queue(cur,file,pz);
      if res=0 then A(2):=cur.qjobno else error:=res;
    end else
    begin
      close(z,true);
      error:=5;
    end;
  end read job file else
  begin
    close(z,true);
    res:=job_to_queue(cur,file,pz); 
    if res=0 then A(2):=cur.qjobno else error:=res;
  end;
  resetbase;
  end check reservation;
  resetbase;
  end job file lookup;
signal(zsem);
end readuscat;
A(1):=error;
<*+2*>
if testop(9) then disable
begin
  write(pz,"nl",1,<:readjob: res: :>,error,A(2));
  setposition(pz,0,0);
end;
<*-2*>
end read_job_file;
▶EOF◀