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

⟦44c7a45e7⟧ TextFile

    Length: 6912 (0x1b00)
    Types: TextFile
    Names: »procestx    «

Derivation

└─⟦110021343⟧ Bits:30007476 RC8000 Backup tape fra HT's bus-radio system
    └─⟦a957ba283⟧ 
        └─⟦this⟧ »procestx    « 

TextFile

begin
message proces  side 1 - 790716/hko;

<* proces udskriver dele af procesbeskrivelserne 
   for alle eller et antal nærmere angivne processer.

   kald:

                     1                               * 1
     (<uddatamedie>=) proces (<s>navn (.<procesnavn>) ) ,
                     0                               1 0
                                                 1 1
            (<s>udvid.<procomfang>(.<systemproc>) )
                                                 0 0

        navn.<procesnavn>           angiver navnet på den (de) 
                                    proces(ser) der ønskes udskrevet.
                                    er parameteren udeladt skrives
                                    alle interne processer samt 's'.
                                    i stedet for et navn kan angives
                                    'egen'.

        udvid.<procomfang>.<systemproc>
                                    er denne parameter udeladt svarer 
                                    det til udvid.0.0

                                    <procomfang> kan have værdierne 
                                    0 og 1, svarende til henholdsvis
                                    mindre og større omfang af 
                                    de enkelte procesbeskrivelser.

                                    <systemproc> kan have værdierne
                                    0 eller 1, svarende til om
                                    'procfunc', 'driverproc' og
                                    ubenyttede procesbeskrivelser
                                    ikke skal eller skal udskrives.
                                    parameteren har kun betydning hvis
                                    'navn' er udeladt.

   kaldte procedurer:

     closefp,
     findfpparam,
     openfp,
     skrivproces,
     ud.

   fejlreaktioner:

     dersom et angivet navn ikke findes  og ikke
     er 'egen',sættes ok.no bitten og der skrives fejlmeddelelsen:

        *** proces: <procesnavn> findes ikke.

*>
\f

message proces  side 2 - 790716/hko;

  integer array ia,ib(1:20);
  integer intant,første_int,ant_udskrevet,
          linie,linie_ant,side;
  zone zu(128,1,stderror);

  system(5,78,ia);
  intant:=(ia(2)-ia(1))//2;
  første_int:=ia(1);
  begin
    integer array intprocref(1:intant);
    integer int_størrelse;

    system(5,første_int,intprocref);
    int_størrelse:=intprocref(2)-intprocref(1);
    begin
      integer array procparam(1:intant*4),
                    wrkstore(1:10);
      integer adr,i,paramant,parnr,nr,måde,omfang;
      integer array field navn,n;
      real array field raf; long array field laf;
      boolean alle,parfundet;
      zone zp((int_størrelse+511)//512*128,1,stderror);

      openfp(zu,0);
      wrkstore(1):=28;
      wrkstore(2):=1; 
      open(zp,4,<::>,0);
      i:=monitor(40)create entry:(zp,0,wrkstore);
      if i>0 then system(9,i+0*write(zu,nl,1,
                <:*** proces: create entry :>,
                case i of (<::>,<:catalog fejl:>,<::>,
                   <:ingen bs-ressourcer:>,<::>,<::>,
                   <:intet maincatalog:>)),<:monitor40:>);

      findfpparam(<:udvid:>,true,procparam);
      måde:=procparam(1);
      omfang:=procparam(2);
      raf:= 0;
      procparam.raf(1):=real<:egen:>;
      procparam.raf(2):=real<::>;
      paramant:=findfpparam(<:navn:>,false<* navne *>,procparam);
      if paramant<0 then paramant:=1;
      alle:= paramant=0;

      navn:=6;
      linie_ant:=200;
      linie:=side:=ant_udskrevet:=parnr:=0;

      for i:=1 step 1 until intant do
      begin
        outrec6(zp,int_størrelse);
        system(5,intprocref(1)-4+intstørrelse*(i-1),zp);
      end;
\f

message proces  side 3 - 790620/hko;

      repeat <* until parnr>=paramant *>
        raf:=laf:=n:=parnr*8;
        if procparam.raf(1)=real <:egen:> then
        begin
          real array ra(1:2);
          system(6,0,ra);
          tofrom(procparam.raf,ra,8);
        end;
        parfundet:=false;
        parnr:=parnr+1;
        nr:=0;
        setposition(zp,0,0);
        repeat <* until nr=intant *>
          inrec6(zp,int_størrelse);
          nr:=nr+1;
          if alle and
             (omfang>0 or (nr<>1 and nr<>3 and zp.navn(1)<>0)) or
            (if nr=1 then  <*...procfunc*>
               zp.navn(1)=0 and
               zp.navn(2)=procparam.n(1) and
               zp.navn(3)=procparam.n(2) and
               zp.navn(4)=procparam.n(3) and
                             0=procparam.n(4)
             else if zp.navn(1)<>0 then
               zp.navn(1)=procparam.n(1) and
               zp.navn(2)=procparam.n(2) and
               zp.navn(3)=procparam.n(3) and
               zp.navn(4)=procparam.n(4)
             else false )
          then
          begin
            integer i,j;
            integer array term(1:8);
            long array field laf;
\f

message proces  side 4 - 790723/hko;

            laf:=0;
            hnavn(15,i);
            term(1):=0;
            j:=system(5,zp.navn(11)+i,term);
            i:=system(5,term(1)+2,term.laf);
            if i<>1 or j<>1 
               or term(1) shift (-16)<32
               or term(1) shift (-16)>126
               or zp.navn(5) extract 12 = 0
               or zp.navn(11)=0

            then term.laf(1):=long <:***:>;
            parfundet:=true;
            ant_udskrevet:=antudskrevet+1;
            if linie+linieant>60 then
            begin
              real r,t;
              boolean min;

              min:=false add 45;
              side:=side+1;
              linie:=0;
              systime(1,0,t);
              write(zu,nl,0,min,if side>1 then 80 else 0,
                       ff,1,min,80,nl,1,
                       <<dd dd dd>,systime(4,t,r),sp,2,
                       <<dd dd>,r/100.0,sp,24,<:proces:>,
                       sp,28,<:side:>,<< dd>,side,nl,1);
            end;
            linie_ant:=
              skrivproces(zu,intprocref(nr),term,zp.navn,måde);
            linie:=linie+linieant;
          end;
        until nr=intant or (parfundet and -,alle);
        if -,parfundet then
        begin
          errorbits:=1;
          write(zu,nl,1,<:*** proces: :>,procparam.laf,<: findes ikke:>);
        end;
      until parnr>=paramant;
      monitor(48)remove entry:(zp,0,ia);
    end;
  end;
  if ant_udskrevet>0 then
  begin
    trapmode:=1 shift 10;
    write(zu,nl,0,false add 61,80,nl,1);
  end;
  closefp(zu,true);
end
▶EOF◀