DataMuseum.dk

Presents historical artifacts from the history of:

MIKADOS

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

See our Wiki for more about MIKADOS

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦be47e5d51⟧ TextFile

    Length: 30336 (0x7680)
    Types: TextFile
    Notes: Mikados_K
    Names: »LIMEFTER.K«

Derivation

└─⟦6c21327e0⟧ Bits:30008986 LINIMATIC K-FILER (IKKE HELT UPTODTATE)
    └─⟦this⟧ »LIMEFTER.K« 

Mikados K File

PROGRAM LIMEFTER;
(*EFTERKALKULATION, SLETNING AF ORDRE,PRODFORK,REGLINIER,RESSBELAST, 
  INDSÆTTELSE AF EFTERKALKULATION*)
(*$L-*)
CONST MAXRECSIZE=1000;
(*@@*)
      PROGRAMNR=8;
TYPE
PARMARRAY=PACKED ARRAY (1..39) OF CHAR;
NIVEAU=(MENIG,SERGENT,LØJTNANT,KAPTAJN,MAJOR,OBERST,GENERAL,HSM,UMULIUS);
POSTADR=0..MAXRECSIZE;
COMMBUF =ARRAY (POSTADR) OF INTEGER;(*commbuf(0)=filnr,resten er posten*)
POINTREC=^COMMBUF;
NAME    =STRING(10);
PCB     =^INTEGER;
MESSAGETYPE=(ÅBEN,LUK,LÆSPOST,LÆSPOSTX,NÆSTE,NÆSTEX,SLET,SLETX,GEMPOST,
             INDSÆT,INITIER,UTILMELD,UAFMELD,PTILMELD,PAFMELD,STOPSYS,        
             RETURNHEAD,RETURNSTAT);                                    
MESSAGE =RECORD
           KOMMANDO:MESSAGETYPE;
           INFO,IREC:INTEGER 
         END;
AR=ARRAY (-4..-4) OF INTEGER;
VAR    PARM:^PARMARRAY;
       USERNIVEAU:NIVEAU;
       F:STRING(18);
       QUQ:^INTEGER;
       IER,IREC,STATUSER,MODE,REMUSERS,
       FILNR,I:INTEGER;
       FNAVN,REGNAVN,DESCNAVN:STRING(18);
       SEMAFOR:NAME;
       FILEINIT:BOOLEAN;
       SNYD:AR;
       CPPCB:PCB;
       COMREC:POINTREC;
       BESKED:MESSAGE;
(*$P*)
(*$L-*)
PROCEDURE D(FRA,NR:INTEGER);
VAR I:INTEGER;
BEGIN
  GOTOXY(1,FRA);
  FOR I:=1 TO NR DO WRITELN(' ':79);
  GOTOXY(1,FRA)
END;
PROCEDURE NONEXIST(S:STRING);
BEGIN
  D(23,1);
  WRITE(S,' findes ikke, RETURN ');
  READLN;D(23,1) 
END;
PROCEDURE BAD(IDENT,STATUS:INTEGER);
BEGIN
  D(23,1);
  WRITE('BAD',IDENT:5,STATUS:5);
  READLN
END;
(*$P*)
PROCEDURE ALLOCA(VAR ADDRESS:POINTREC;LENGTH:INTEGER;
                 VAR STATUS:INTEGER);
EXTERNAL;
PROCEDURE DEALLO(ADDRESS:POINTREC;VAR STATUS:INTEGER);
EXTERNAL;
PROCEDURE SENDM(RECEIVER:PCB;VAR CONTENTS:MESSAGE;
                LENGTH:INTEGER;VAR STATUS:INTEGER);
EXTERNAL;
PROCEDURE RECEIV(VAR SENDER:PCB;VAR CONTENTS:MESSAGE;
                 VAR LENGTH:INTEGER);
EXTERNAL;
PROCEDURE RESERV(RESOURCE:NAME;EXCLUSIVE,WAIT:BOOLEAN;
                 VAR STATUS:INTEGER);
EXTERNAL;
PROCEDURE RELEAS(RESOURCE:NAME;VAR STATUS:INTEGER);
EXTERNAL;
(*$IRESPRINT*)
(*$P*)
(*$IUDFØR*)
(*$IFISFPROC*)
(*$P*)
PROCEDURE REGVEDL;
CONST MAXFELTER=30;
(*@@*)
TYPE
NFELT=^FELTBESKRIVELSE;
SKÆRMPOS=RECORD
   X,Y:INTEGER
END;
FTYPE=(HELTAL,DOBBTAL,REEL,TEKST);
VTYPE=(HINTERVAL,DINTERVAL,RINTERVAL,DATO,CPR);
BESKRIVELSESTYPE=(FELTDESC,VALIDESC);
FELTBESKRIVELSE=RECORD
   NÆSTEVAL:NFELT;
   FELTNAVN:STRING(8);
   CASE DESCTYPE:BESKRIVELSESTYPE OF
   FELTDESC:
  (INDPOS,UDPOS:SKÆRMPOS;
   KIKKENIVEAU,ÆNDRENIVEAU:NIVEAU;
   EDITERING:INTEGER;
   LEDETEKST,FØLGETEKST:STRING;
   INDEKS,
   LÆNGDE,
   HÆGTE,
   FORAN0:INTEGER;
   CASE FELTTYPE:FTYPE OF
   REEL:(DEC:INTEGER);
   HELTAL,DOBBTAL,TEKST:());
   VALIDESC:
  (CASE VALIDITETSTYPE:VTYPE OF
      HINTERVAL:(MIN,MAX:INTEGER);
      DINTERVAL:(MIN1,MIN2,MAX1,MAX2:INTEGER);
      RINTERVAL:(RMIN,RMAX:REAL);
      DATO,CPR:())
END;
ARAR=PACKED ARRAY (-11..-10) OF CHAR;
RAR=ARRAY (0..0) OF REAL;
LONGINT = ARRAY (1..2) OF INTEGER;
(*@@EVT. TOTAL POSTERKLÆRING,FLERE POSTER*)
(*$P*)
(*$L+*)
RESSPOST=RECORD
  AA:ARAR;
  A:AR;
  AAA:RAR;
  TSATSF,
  SAMOMS,
  SAMOMSSÅ,
  SAMDB,
  SAMDBSÅ,
  KØBSPRIS,
  SALGSPRI            :REAL;
  NR,
  AFDELNR,
  PRODTIM,
  VEDLTIM,
  OPSTILT,
  OVERTIM,
  REPTIME,
  TOTALTI,
  PRODTIMS,
  VEDLTIMS,
  OPSTILTS,
  OVERTIMS,
  REPTIMES,
  TOTALTIS,                    
  RESSTYPE           :INTEGER;
  DATOFLEV           :LONGINT;
  HYLDENR            :INTEGER;
  BETEGN             :PACKED ARRAY (1..10) OF CHAR
END;
REGRPOST=RECORD
  AA:ARAR;
  A:AR;
  AAA:RAR;
  GRUPNR,
  NR                 :INTEGER 
END;
KUNDPOST=RECORD
  AA:ARAR;
  A:AR;
  AAA:RAR;
  NR                 :LONGINT;
  NAVN               :PACKED ARRAY (1..26) OF CHAR;
  KONTAKT1,
  KONTAKT2,
  KONTAKT3,
  KONTAKT4           :PACKED ARRAY (1..30) OF CHAR
END;
EMNEPOST=RECORD
  AA:ARAR;
  A:AR;
  AAA:RAR;
  ÅRSFORBR,
  NETTOVÆG,
  BRUTTOVÆ,
  SAMSALG,
  DÆKBID,
  DÆKBIDSÅ,
  SAMSALGS          :REAL;
  NR,
  FORMNR            :INTEGER;
  KUNDENR           :LONGINT;
  MASKINE           :INTEGER;
  TILDATO           :LONGINT;
  MATNR,
  SVIND,
  SMELTTIL,
  STKHSA,
  STKHBA            :INTEGER;
  BEMÆRK,
  BETEGN,
  ALTERNP           :PACKED ARRAY (1..30) OF CHAR;
  TEGNNR            :PACKED ARRAY (1..20) OF CHAR
END;
RÅVAPOST=RECORD
  AA:ARAR;
  A:AR;
  AAA:RAR;
  PRISKG,
  OMSÆTP,
  DBP,
  KOSTPRIS,
  OMSÆTSP,
  DBSÅ,   
  KOSTPRSÅ,
  LAGER,    
  MINLAGE,  
  RESERVER, 
  SMEPRIS,   
  KGINDKØB,  
  KGFORBRU,  
  KGSOLGT           :REAL;   
  NR,
  LEVUGE,
  SMESVIND          :INTEGER;
  BETEGN            :PACKED ARRAY (1..16) OF CHAR
END;
OPERPOST=RECORD
  AA:ARAR;
  A:AR;
  AAA:RAR;
  TILLÆG            :REAL;
  NR,
  GRUPPE,
  REBELAS           :INTEGER;
  BETEGN            :PACKED ARRAY (1..30) OF CHAR
END;
PRODPOST=RECORD
  AA:ARAR;
  A:AR;
  AAA:RAR;
  KRSTK,    (*SAMLET TIMESATS FOR ALLE RESSOURCER*)
  REAANTAL          :REAL;
  ORDRENR,
  SEKVENSN,
  OPERANR,
  STARTTID,
  OPERAFSL,
  STKH,
  RESS1,
  RESS2,
  RESS3,
  RESS4,
  RESS5,
  EMNENR,
  VARIGHED          :INTEGER 
END;
ORDRPOST=RECORD
  AA:ARAR;
  A:AR;
  AAA:RAR;
  ANTALBES,
  SALGSPRI,
  MATOMK,
  LØNOMK,
  MASKINOM,
  SMEOMK,
  MATFORB           :REAL;
  NR                :INTEGER;
  KUNDENR           :LONGINT;
  EMNENR            :INTEGER;
  REGDATO           :LONGINT;
  ØNSKLEV,
  BEKRÆLEV          :INTEGER;
  KUNDORDR          :PACKED ARRAY (1..16) OF CHAR;
  INITIALE          :PACKED ARRAY (1..4) OF CHAR 
END;
OTEXPOST=RECORD
  AA:ARAR;
  A:AR;
  AAA:RAR;
  NR,
  EMNENR,
  LBNR              :INTEGER;
  TEKST             :PACKED ARRAY (1..70) OF CHAR
END;
OMVPPOST=RECORD
  AA:ARAR;
  A:AR;
  AAA:RAR;
  ORDRENR,
  SEKVENSN,
  OPERANR,
  EMNENR            :INTEGER 
END;
KUNOPOST=RECORD
  AA:ARAR;
  A:AR;
  AAA:RAR;
  KUNDENR           :LONGINT;
  ORDRENR,
  EMNENR            :INTEGER 
END;
REGLPOST=RECORD
  AA:ARAR;
  A:AR;
  AAA:RAR;
  TID,
  MÆNGDE,
  LØN              :REAL;
  ORDRENR,
  EMNENR,
  OPERANR,
  MEDARBNR         :INTEGER;
  DATO             :LONGINT;
  RTYPE            :INTEGER
END;
REBEPOST=RECORD
  AA:ARAR;
  A:AR;
  AAA:RAR;
  NR,
  STARTDAG,
  ORDRENR,
  EMNENR,
  OPERANR,  
  SEKVNR,
  VARIGHED,
  GRUPPE,
  STTIME          :INTEGER 
END;
EFTEPOST=RECORD
  AA:ARAR;
  A:AR;
  AAA:RAR;
  BESANTAL,
  LEVANTAL,
  MATOMK,
  LØNOMK,
  MASKOMK,
  SALGSPRI,
  PLUSMINU        :REAL;
  EMNENR          :INTEGER;
  DATO            :LONGINT;
  ORDRENR         :INTEGER 
END;
SYSRPOST=RECORD
  AA:ARAR;
  A:AR;
  AAA:RAR;
  AKKTIME          :ARRAY (1..9) OF REAL;
  NR               :INTEGER;
  DAGSDATO,                 
  PERSTDAT         :LONGINT;
  ARBTIMDA,         
  ORDRENR          :INTEGER 
END;
VAR FELT:NFELT;
    PICTURE:ARRAY (1..MAXFELTER) OF NFELT;
    OPTION,LINES,
    I,J,ANTALFELTER:INTEGER;
    LINE:STRING;
    RESS:RESSPOST;
    RESSGRUP:REGRPOST;
    KUNDE:KUNDPOST;
    EMNE:EMNEPOST;
    RÅVARE:RÅVAPOST;
    OPERA:OPERPOST;
    PROD:PRODPOST;
    OMVPROD:OMVPPOST;
    ORDTEKST:OTEXPOST;
    ORDRE:ORDRPOST;
    KUNORDRE:KUNOPOST;
    POST:EFTEPOST;
    REGLI:REGLPOST;
    REBELAST:REBEPOST;
    SYSTEM:SYSRPOST;
    LONGNUL:LONGINT;
    CH:CHAR;
    NEJ,JA,JAOGNEJ:SET OF CHAR;
(*$P*)
(*$L-*)
FUNCTION QJN(S:STRING):CHAR;
VAR CH:STRING(1);
BEGIN
  REPEAT
    D(23,1);
    WRITE(S,' J/N ');
    CH:='J';
    EDIT(CH)
  UNTIL CH(1) IN JAOGNEJ;
  QJN:=CH(1);
  D(23,1) 
END;
PROCEDURE ERROR(VAR REC:AR);
VAR CH:STRING(1);
    I:INTEGER;
BEGIN
  D(23,1);
                                                                     (*$R-*)
  WRITE('FEJL I REGISTER ',REC(-3),' FEJLKODE ',IER,' RETURN');      (*$R+*)
  CH:=' ';EDIT(CH);
  IF CH='Æ' THEN BEGIN IER:=0;EXIT(ERROR) END;
  ICLOSE(RESS.A);    
  ICLOSE(RESSGRUP.A);    
  ICLOSE(KUNDE.A);
  ICLOSE(EMNE.A);    
  ICLOSE(RÅVARE.A);
  ICLOSE(OPERA.A);   
  ICLOSE(OMVPROD.A); 
  ICLOSE(ORDTEKST.A); 
  ICLOSE(ORDRE.A);    
  ICLOSE(KUNORDRE.A);
  ICLOSE(PROD.A); 
  ICLOSE(POST.A);
  ICLOSE(REGLI.A);
  ICLOSE(REBELAST.A);
  EXIT(REGVEDL)
END;
PROCEDURE CHECK0(VAR REC:AR);
BEGIN
  IF IER<>0 THEN ERROR(REC)
END;
(*$P*)
(*$L-*)
(*$IRLÆSDESC*)
(*$P*)
(*$IMOVETOLI*)
(*$P*)
(*$L+*)
PROCEDURE MAINTAIN;
VAR CH:CHAR;
 
 
PROCEDURE EFTERKALK;
VAR LINES:INTEGER;
    FTPSTK,FKRPSTK,
    LSATS,MSATS,
    TTPSTK,TTOTTID,TKRPSTK,
    RTPSTK,RTOTTID,RKRPSTK:REAL;
 
PROCEDURE HEADING;
BEGIN
  WHILE LINES<51 DO BEGIN WRITELN(LIST);LINES:=LINES+1 END;
  FOR LINES:=1 TO 2 DO WRITELN(LIST);
  WRITELN(LIST,'EFTERKALKULATION',' ':36,'kunde-ordrenr',
               ' ':6,'linimatic ordrenr',' ':5, 'emnenr',
               ' ':11,'dato');
  WRITELN(LIST,'ANTAL BESTILT',POST.BESANTAL:10:-2,'  LEVERET',
               POST.LEVANTAL:10:-2,' ':10,
               ORDRE.KUNDORDR,
               ORDRE.NR:20,ORDRE.EMNENR:11,
               SYSTEM.DAGSDATO(1)*10000.0+SYSTEM.DAGSDATO(2):15:-2);
  WRITELN(LIST,'tegn. nr',' ':22,'benævnelse',' ':26,'kunde',
               ' ':36,'kundenr');
  WRITELN(LIST,EMNE.TEGNNR,' ':10,EMNE.BETEGN,' ':6  
              ,KUNDE.NAVN
              ,ORDRE.KUNDENR(1)*10000.0+ORDRE.KUNDENR(2):22:-2);
  WRITELN(LIST,' ':38,'FORKALKULATION',' ':18,'EFTERKALKULATION');
  WRITELN(LIST,'op op- betegnelse        antal a mas-  stk   tid  total',
               '    time    kr  stk   tid  total     kr      difference');
  WRITELN(LIST,'nr art                           kine   /h  /stk    tid',
               '    sats  /stk   /h  /stk    tid   /stk    kr/stk   tid/stk');
  WRITELN(LIST);
  LINES:=10 
END;
(*$P*)
PROCEDURE BOTTOM;
VAR ROMK,RSMEOMK,RSMELT:REAL;
BEGIN
  WITH ORDRE DO
  BEGIN
    POST.MASKOMK:=POST.MASKOMK/POST.LEVANTAL;
    POST.LØNOMK:=POST.LØNOMK/POST.LEVANTAL;
    RTPSTK:=RTOTTID/POST.LEVANTAL;
    RKRPSTK:=POST.MASKOMK+POST.LØNOMK;
    WRITELN(LIST,'---------------------------------------------------------',
                 '---------------------------------------------------------');
    WRITELN(LIST,'TOTAL',' ':34,TTPSTK:9:3,TTOTTID:7:2,TKRPSTK:14:3, 
                                RTPSTK:11:3,RTOTTID:7:2,RKRPSTK:7:3,
                             TKRPSTK-RKRPSTK:10:3,TTPSTK-RTPSTK:10:3);
    WRITELN(LIST);
    IF LINES>34 THEN HEADING;
    RSMELT:=POST.MATOMK*(1000.0+EMNE.SVIND)/1000.0*
                        (1000.0+EMNE.SMELTTIL)/1000.0*
                        (1000.0+RÅVARE.SMESVIND)/1000.0;
    RSMEOMK:=RSMELT*RÅVARE.SMEPRIS/1000.0;
    WRITELN(LIST,'SMELTEOMKOSTNINGER',' ':27,SMEOMK:8:3,' ':16,RSMEOMK:8:3);
    POST.MATOMK:=RSMELT-POST.MATOMK*(1000.0+EMNE.SVIND)/1000.0*
                        EMNE.SMELTTIL/1000.0;            (*FORBRUG*)
    POST.MATOMK:=POST.MATOMK*RÅVARE.KOSTPRIS/1000.0;
    WRITELN(LIST,'MATERIALEFORBRUG  ',' ':27,MATFORB:8:3,' ':16,
                                                           POST.MATOMK:8:3);
    WRITELN(LIST,' ':45,'----------------',' ':8,'----------------');
    POST.MATOMK:=POST.MATOMK+RSMEOMK;
    WRITELN(LIST,'MAT.-OMKOSTNINGER ',' ':27,MATOMK:8:3,MATOMK:8:3,' ':8,
                        POST.MATOMK:8:3,POST.MATOMK:8:3);
    WRITELN(LIST,'LØNOMKOSTNINGER   ',' ':35,LØNOMK:8:3,
                                                     POST.LØNOMK:24:3);
    WRITELN(LIST,'MASKINOMKOSTNINGER',' ':35,MASKINOM:8:3,
                                                     POST.MASKOMK:24:3);
    WRITELN(LIST,' ':53,'----------------',' ':8,'------------------------');
    WRITELN(LIST,'EMNEPRIS          ',' ':35,MATOMK+
                 LØNOMK+MASKINOM:8:3,MATOMK+LØNOMK+MASKINOM:8:3,
                 POST.MATOMK+POST.LØNOMK+POST.MASKOMK:16:3,
                 POST.MATOMK+POST.LØNOMK+POST.MASKOMK:16:3);
    WRITELN(LIST,'DÆKNINGSBIDRAG    ',' ':35,-MATOMK+
                      SALGSPRI-LØNOMK-MASKINOM:16:3,
                 POST.SALGSPRI-(POST.MATOMK+POST.LØNOMK+POST.MASKOMK):32:3);
    WRITELN(LIST,' ':61,'--------',' ':24,'--------');
    WRITELN(LIST,'SALGSPRIS         ',' ':35,SALGSPRI:16:3,' ':16,
                                             POST.SALGSPRI:16:3);
    WRITELN(LIST,' ':61,'========',' ':24,'========') 
  END;
  LINES:=LINES+15;
  WHILE LINES<51 DO BEGIN WRITELN(LIST);LINES:=LINES+1 END 
END;
(*$P*)
PROCEDURE FIXSATS(VAR RESSURS:INTEGER;VAR ASATS:REAL);
VAR SATS:REAL;
BEGIN
  RESS.NR:=0;
  IF RESSURS>0 THEN
  BEGIN
    RESS.NR:=RESSURS;
    GETRECX(RESS.A);CHECK0(RESS.A);
    SATS:=RESS.TSATSF
  END
  ELSE 
  IF RESSURS<0 THEN
  BEGIN
    RESSGRUP.GRUPNR:=-RESSURS;
    RESSGRUP.NR:=-1;
    NEXTREC(RESSGRUP.A);IF NOT (-IER IN (.1,2,9.)) THEN
                                      ERROR(RESSGRUP.A);IER:=0;
    RESS.NR:=RESSGRUP.NR;
    GETRECX(RESS.A);CHECK0(RESS.A);
    SATS:=RESS.TSATSF
  END
  ELSE SATS:=0.0;
  IF SATS<>0.0 THEN ASATS:=ASATS+SATS;
  IF RESS.NR>0 THEN
  BEGIN
  CASE OPERA.REBELAS OF
  1:RESS.PRODTIM:=RESS.PRODTIM+ROUND(REGLI.TID);
  2:RESS.VEDLTIM:=RESS.VEDLTIM+ROUND(REGLI.TID);
  3:RESS.OPSTILT:=RESS.OPSTILT+ROUND(REGLI.TID);
  4:RESS.OVERTIM:=RESS.OVERTIM+ROUND(REGLI.TID);
  5:RESS.REPTIME:=RESS.REPTIME+ROUND(REGLI.TID) 
  END;
  IF RESS.RESSTYPE<10 THEN RESS.RESSTYPE:=RESS.RESSTYPE+20;
    (*FLAG TIL SIKRING AF EEN OMSÆTNINGSOPTÆLLING I OPTÆLRES.FIXRESS*)
  PUTREC(RESS.A);
  CHECK0(RESS.A)
  END
END;
(*$P*)
PROCEDURE RIGHTSIDE;
VAR TPSTK,KRPSTK:REAL;
BEGIN
  TPSTK:=0.0;
  KRPSTK:=TPSTK;
  POST.LØNOMK:=POST.LØNOMK+REGLI.LØN+LSATS*REGLI.TID;
  POST.MASKOMK:=POST.MASKOMK+MSATS*REGLI.TID;
  IF REGLI.TID>0.0 THEN
    WRITE(LIST,POST.LEVANTAL/REGLI.TID:5:-2)
  ELSE WRITE(LIST,'-':5);
  IF POST.LEVANTAL>0.0 THEN
  BEGIN
    TPSTK:=REGLI.TID/POST.LEVANTAL;
    WRITE(LIST,TPSTK:6:3);
    RTPSTK:=RTPSTK+TPSTK
  END
  ELSE WRITE(LIST,'-':6);
  WRITE(LIST,REGLI.TID:7:2);
  RTOTTID:=RTOTTID+REGLI.TID;
  IF POST.LEVANTAL>0.0 THEN
  BEGIN
    KRPSTK:=(REGLI.LØN+(LSATS+MSATS)*REGLI.TID)/POST.LEVANTAL;
    WRITE(LIST,KRPSTK:7:3);
    RKRPSTK:=RKRPSTK+KRPSTK
  END
  ELSE WRITE(LIST,'-':7);
  WRITELN(LIST,FKRPSTK-KRPSTK:10:3,FTPSTK-TPSTK:10:3);
  LINES:=LINES+1
END;
(*$P*)
BEGIN (*EFTERKALKULATION*)
 LINES:=51;
 WITH PROD DO
 BEGIN
 
  TTPSTK:=0.0;
  TTOTTID:=0.0;
  RTPSTK:=0.0;
  RTOTTID:=0.0;
  RKRPSTK:=0.0;
  TKRPSTK:=0.0;
 
  ORDRENR:=ORDRE.NR;
  EMNENR:=ORDRE.EMNENR;
  SEKVENSN:=0;
  OPERANR:=0;
  NEXTREC(A);IF NOT (-IER IN (.1,2,9.)) THEN ERROR(A);IER:=0;
  WHILE (IER=0) AND (EMNENR=ORDRE.EMNENR) AND (ORDRENR=ORDRE.NR) DO
  BEGIN
    IF LINES>48 THEN HEADING;
    REGLI.ORDRENR:=ORDRENR;
    REGLI.EMNENR:=EMNENR;
    REGLI.OPERANR:=OPERANR;
    REGLI.MEDARBNR:=0;
    REGLI.DATO:=LONGNUL;
    GETRECX(REGLI.A);CHECK0(REGLI.A);
    WRITE(LIST,SEKVENSN:2,OPERANR:4,' ');
    WITH OPERA DO
    BEGIN
      NR:=OPERANR;
      GETREC(A);CHECK0(A);
      WRITE(LIST,BETEGN:17)
    END;
    WRITE(LIST,REGLI.MÆNGDE:6:-2);
    IF RESS1>0 THEN
    WITH RESS DO
    BEGIN
      NR:=RESS1;
      GETRECX(A);CHECK0(A);
      WRITE(LIST,AFDELNR:2,NR:5)
    END
    ELSE
    IF RESS1=0 THEN WRITE(LIST,' ':7)
    ELSE WRITE(LIST,'  *',-RESS1:4);
    IF STKH<=0 THEN
    BEGIN
      FTPSTK:=-STKH/ORDRE.ANTALBES/100.0;
      TTOTTID:=TTOTTID-STKH/100.0;
      WRITE(LIST,-STKH/100.0:18:2)
    END
    ELSE
    BEGIN
      FTPSTK:=1/STKH;
      TTPSTK:=TTPSTK+FTPSTK;
      TTOTTID:=TTOTTID+ORDRE.ANTALBES*FTPSTK;
      WRITE(LIST,STKH:5,FTPSTK:6:3,ORDRE.ANTALBES*FTPSTK:7:2) 
    END;
    WRITE(LIST,KRSTK:8:2);
    IF STKH<=0 THEN
      FKRPSTK:=-STKH*KRSTK/ORDRE.ANTALBES/100.0
    ELSE
      FKRPSTK:=KRSTK/STKH;
    TKRPSTK:=TKRPSTK+FKRPSTK;
    WRITE(LIST,FKRPSTK:6:3);
    MSATS:=0.0;
    LSATS:=0.0;
    FIXSATS(RESS1,MSATS);
    FIXSATS(RESS2,LSATS);
    FIXSATS(RESS3,MSATS);
    FIXSATS(RESS4,MSATS);
    RIGHTSIDE;
    DELETE(REGLI.A);IF IER<>-9 THEN CHECK0(REGLI.A);
    NEXTREC(A)
  END;
  IF NOT (-IER IN (.0,2,9.)) THEN ERROR(A);
  REGLI.ORDRENR:=POST.ORDRENR;
  REGLI.EMNENR:=POST.EMNENR;
  REGLI.OPERANR:=0;
  REGLI.MEDARBNR:=0;
  REGLI.DATO:=LONGNUL;
  MSATS:=0.0;
  LSATS:=MSATS;
  FTPSTK:=MSATS;
  FKRPSTK:=MSATS;
  NEXTRECX(REGLI.A);IF NOT (-IER IN (.1,2,9.)) THEN ERROR(REGLI.A);IER:=0;
  WHILE (IER=0) AND (REGLI.ORDRENR=POST.ORDRENR) AND 
        (REGLI.EMNENR=POST.EMNENR) DO
  WITH REGLI DO
  BEGIN
    WRITE(LIST,OPERANR:6,' ');
    WITH OPERA DO
    BEGIN
      NR:=OPERANR;
      GETREC(A);CHECK0(A);
      WRITE(LIST,BETEGN:17)
    END;
    WRITE(LIST,MÆNGDE:6:-2,' ':39);
    RIGHTSIDE;
    DELETEX(A)
  END;
  IF NOT (-IER IN (.0,2,9.)) THEN ERROR(REGLI.A);
  BOTTOM
 END
END;
(*$P*)
PROCEDURE SLETORDRE;
BEGIN
  WITH KUNORDRE DO
  BEGIN
    ORDRENR:=ORDRE.NR;
    KUNDENR:=ORDRE.KUNDENR;
    EMNENR:=ORDRE.EMNENR;
    GETRECX(A);IF NOT (-IER IN (.0,6.)) THEN ERROR(A);
    DELETE(A); CHECK0(A)
  END;
 
  ORDTEKST.NR:=ORDRE.NR;
  ORDTEKST.EMNENR:=ORDRE.EMNENR;
  ORDTEKST.LBNR:=0;
  NEXTRECX(ORDTEKST.A);IF NOT (-IER IN (.1,2,9.)) THEN
                      ERROR(ORDTEKST.A);IER:=0;
  WHILE (ORDTEKST.NR=ORDRE.NR) AND (ORDTEKST.EMNENR=ORDRE.EMNENR) AND
        (IER=0) DO DELETEX(ORDTEKST.A);
  IF NOT (-IER IN (.0,2,9.)) THEN ERROR(ORDTEKST.A);
  GETREC(ORDTEKST.A);IF IER<>0 THEN ERROR(ORDTEKST.A);
 
  DELETE(ORDRE.A);IF NOT (-IER IN (.0,2,9.)) THEN ERROR(ORDRE.A) 
 
END;
(*$P*)
PROCEDURE ORDRESTATUS;
VAR TTID,TMÆNGDE,TLØN,TPSTK,
    ATID,AMÆNGDE,ALØN:REAL;
    LINES:INTEGER;
 
PROCEDURE HEADING;
BEGIN
  WHILE LINES<53 DO BEGIN WRITELN(LIST);LINES:=LINES+1 END;
  WRITELN(LIST,' ':52,'kunde-ordrenr',' ':6,'linimatic ordrenr',' ':5,
               'emnenr',' ':6,'dato');
  WRITELN(LIST,'ORDRESTATUS',' ':41,ORDRE.KUNDORDR,
               ORDRE.NR:20,ORDRE.EMNENR:11,
               SYSTEM.DAGSDATO(1)*10000.0+SYSTEM.DAGSDATO(2):10:-2);
  WRITELN(LIST,'tegn. nr',' ':22,'benævnelse',' ':26,'kunde',
               ' ':31,'kundenr');
  WRITELN(LIST,EMNE.TEGNNR,' ':10,EMNE.BETEGN,' ':6, 
               KUNDE.NAVN,
               ORDRE.KUNDENR(1)*10000.0+ORDRE.KUNDENR(2):17:-2);
  WRITELN(LIST);
  WRITELN(LIST,'  MEDARBNR      DATO  REALISERET              REALISERET',
               '  ENHEDER');
  WRITELN(LIST,'                      TIDSFORBRUG  PR. ENHED         LØN');
  LINES:=9 
END;
(*$P*)
PROCEDURE REGLINIE(ORDRENR,EMNENR,OPERANR:INTEGER);
BEGIN
      IF LINES>40 THEN HEADING;
      TPSTK:=0.0;
      TTID:=0.0;
      TLØN:=0.0;
      TMÆNGDE:=0.0;
      ATID:=0.0;
      ALØN:=0.0;
      AMÆNGDE:=0.0;
      OPERA.NR:=OPERANR;
      GETREC(OPERA.A);CHECK0(OPERA.A);
      WRITELN(LIST);
      WRITELN(LIST,OPERA.NR:4,' ',OPERA.BETEGN);
      LINES:=LINES+2;
      REGLI.ORDRENR:=ORDRENR;
      REGLI.EMNENR:=EMNENR;
      REGLI.OPERANR:=OPERANR;
      REGLI.MEDARBNR:=0;
      REGLI.DATO:=LONGNUL;
      NEXTRECX(REGLI.A);IF NOT (-IER IN (.1,2,9.)) THEN ERROR(REGLI.A);IER:=0;
      WHILE (IER=0) AND (REGLI.OPERANR=OPERANR) AND (REGLI.ORDRENR=ORDRENR)
            AND (REGLI.EMNENR=EMNENR) DO
      BEGIN
        IF REGLI.DATO(1)>99 THEN
        BEGIN
          ATID:=ATID+REGLI.TID;
          ALØN:=ALØN+REGLI.LØN;
          AMÆNGDE:=AMÆNGDE+REGLI.MÆNGDE 
        END
        ELSE
        BEGIN
          IF LINES>44 THEN HEADING;
          WRITE(LIST,REGLI.MEDARBNR:10,
                     REGLI.DATO(1)*10000.0+REGLI.DATO(2):10:-2,
                     REGLI.TID:13:2);
          IF REGLI.MÆNGDE<>0.0 THEN 
            WRITE(LIST,REGLI.TID/REGLI.MÆNGDE:11:4)                          
          ELSE WRITE(LIST,'-':11);
          WRITELN(LIST,REGLI.LØN:12:2,REGLI.MÆNGDE:9:-2);
          LINES:=LINES+1;
          TTID:=TTID+REGLI.TID;
          TLØN:=TLØN+REGLI.LØN;
          TMÆNGDE:=TMÆNGDE+REGLI.MÆNGDE
        END;
        DELETEX(REGLI.A)
      END;
      IF NOT (-IER IN (.0,2,9.)) THEN ERROR(REGLI.A);
    (*UDSKRIV TOTAL, GENERER ELLER CHECK TOTALPOST*)
      WRITELN(LIST,
         '-----------------------------------------------------------------');
      WRITE(LIST,'REALISERET    OPTALT',TTID:13:2);
      IF TMÆNGDE<>0.0 THEN
        TPSTK:=TTID/TMÆNGDE
      ELSE
        TPSTK:=0.0;
      IF TPSTK<>0.0 THEN WRITE(LIST,TPSTK:11:4) 
      ELSE WRITE(LIST,'-':11);
      WRITELN(LIST,TLØN:12:2,TMÆNGDE:9:-2);
      WRITE(LIST,'REALISERET INDTASTET',ATID:13:2);
      IF AMÆNGDE<>0.0 THEN WRITE(LIST,ATID/AMÆNGDE:11:4) 
      ELSE WRITE(LIST,'-':11);
      WRITELN(LIST,AMÆNGDE:21:-2);
      IF ATID=0.0 THEN ATID:=TTID;
      IF ALØN=0.0 THEN ALØN:=TLØN;
      IF AMÆNGDE=0.0 THEN AMÆNGDE:=TMÆNGDE;
      LINES:=LINES+3;
      REGLI.ORDRENR:=ORDRENR;
      REGLI.EMNENR:=EMNENR;
      REGLI.OPERANR:=OPERANR;
      REGLI.MEDARBNR:=0;
      REGLI.DATO:=LONGNUL;
      REGLI.TID:=ATID;
      REGLI.LØN:=ALØN;
      REGLI.MÆNGDE:=AMÆNGDE;
      INSERT(REGLI.A);CHECK0(REGLI.A) 
END;
(*$P*)
BEGIN (*ORDRESTATUS*)
  LINES:=51;
  WITH PROD DO
  BEGIN
    ORDRENR:=POST.ORDRENR;
    EMNENR:=POST.EMNENR;
    SEKVENSN:=0;
    OPERANR:=0;
    NEXTREC(A);IF NOT (-IER IN (.1,2,9.)) THEN ERROR(A);IER:=0;
    WHILE (IER=0) AND (ORDRENR=POST.ORDRENR) AND (EMNENR=POST.EMNENR) DO
    BEGIN
      REGLINIE(ORDRENR,EMNENR,OPERANR);
      POST.LEVANTAL:=REGLI.MÆNGDE;
      WRITE(LIST,'KALKULERET',' ':13);
      IF PROD.STKH<=0 THEN
        WRITE(LIST,-PROD.STKH/100.0:10:2,
                   -PROD.STKH/ORDRE.ANTALBES/100.0:11:4)
      ELSE WRITE(LIST,ORDRE.ANTALBES/PROD.STKH:10:2,1/PROD.STKH:11:4);
      WRITELN(LIST,ORDRE.ANTALBES:21:-2);
      LINES:=LINES+1;
      NEXTREC(A)
    END;
    IF NOT (-IER IN (.0,2,9.)) THEN ERROR(A);
 
    HEADING;
    WRITELN(LIST,'IKKEKALKULEREDE REGISTRERINGSLINIER');
    LINES:=LINES+1;
    REGLI.ORDRENR:=POST.ORDRENR;
    REGLI.EMNENR:=POST.EMNENR;
    REGLI.OPERANR:=0;
    REGLI.MEDARBNR:=0;
    REGLI.DATO:=LONGNUL;
    NEXTRECX(REGLI.A);IF NOT (-IER IN (.1,2,9.)) THEN ERROR(REGLI.A);IER:=0;
    WHILE (IER=0) AND (REGLI.ORDRENR=POST.ORDRENR) AND 
          (REGLI.EMNENR=POST.EMNENR) DO
    BEGIN
      IF REGLI.MEDARBNR>0 THEN 
        REGLINIE(REGLI.ORDRENR,REGLI.EMNENR,REGLI.OPERANR);
      NEXTRECX(REGLI.A)
    END;
    IF NOT (-IER IN (.0,2,9.)) THEN ERROR(REGLI.A);
    WHILE LINES<51 DO BEGIN WRITELN(LIST);LINES:=LINES+1 END 
  END
END;
(*$P*)
PROCEDURE OPTÆLRES;
 
PROCEDURE FIXRESS(VAR RESSURS:INTEGER);
BEGIN
  RESS.NR:=0;
  IF RESSURS>0 THEN
    RESS.NR:=RESSURS 
  ELSE 
  IF RESSURS<0 THEN
  BEGIN
    RESSGRUP.GRUPNR:=-RESSURS;
    RESSGRUP.NR:=-1;
    NEXTREC(RESSGRUP.A);IF NOT (-IER IN (.1,2,9.)) THEN
                                      ERROR(RESSGRUP.A);IER:=0;
    RESS.NR:=RESSGRUP.NR 
  END;
  IF RESS.NR>0 THEN
  BEGIN
    GETRECX(RESS.A);CHECK0(RESS.A);
    IF RESS.RESSTYPE>10 THEN (*SE FIXSATS*)
    BEGIN
      RESS.RESSTYPE:=RESS.RESSTYPE-20;
      RESS.SAMOMS:=RESS.SAMOMS+POST.LEVANTAL*POST.SALGSPRI;
      RESS.SAMDB:=RESS.SAMDB+POST.LEVANTAL*(POST.SALGSPRI-(POST.LØNOMK+
                                            POST.MATOMK+POST.MASKOMK))
    END;
    PUTREC(RESS.A);
    CHECK0(RESS.A);
    REBELAST.NR:=RESS.NR;
    REBELAST.STARTDAG:=PROD.STARTTID MOD 1000;
    REBELAST.STTIME:=PROD.STARTTID DIV 1000;
    REBELAST.ORDRENR:=PROD.ORDRENR;
    REBELAST.EMNENR:=PROD.EMNENR;
    REBELAST.OPERANR:=PROD.OPERANR;
    GETRECX(REBELAST.A);IF NOT (-IER IN (.0,6.)) THEN ERROR(REBELAST.A);
    IF IER=0 THEN BEGIN DELETE(REBELAST.A);CHECK0(REBELAST.A) END 
  END
END;
(*$P*)
BEGIN (*OPTÆLRES*)
  WITH PROD DO
  BEGIN
    ORDRENR:=POST.ORDRENR;
    EMNENR:=POST.EMNENR;
    SEKVENSN:=0;
    OPERANR:=0;
    NEXTRECX(A);IF NOT (-IER IN (.1,2,9.)) THEN ERROR(A);IER:=0;
    WHILE (IER=0) AND (ORDRENR=POST.ORDRENR) AND (EMNENR=POST.EMNENR) DO
    BEGIN
      FIXRESS(RESS1);
      FIXRESS(RESS2);
      FIXRESS(RESS3);
      FIXRESS(RESS4);
      OMVPROD.ORDRENR:=ORDRENR;
      OMVPROD.EMNENR:=EMNENR;
      OMVPROD.SEKVENSN:=SEKVENSN;
      OMVPROD.OPERANR:=OPERANR;
      GETRECX(OMVPROD.A);CHECK0(OMVPROD.A);
      DELETE(OMVPROD.A);CHECK0(OMVPROD.A);
      DELETEX(A)
    END;
    IF NOT (-IER IN (.0,2,9.)) THEN ERROR(A);
    GETREC(A);CHECK0(A) (*FJERN XCLUSIV*)
  END
END;
(*$P*)
BEGIN (*MAINTAIN*)
  WITH POST DO
  REPEAT
    CLEARSCREEN;
    WRITELN('E F T E R K A L K U L A T I O N');
    LÆSFELT(PICTURE(1));
    IF ORDRENR>0 THEN
    BEGIN
      SKRIVFELT(PICTURE(1));
      LÆSFELT(PICTURE(2));
      SKRIVFELT(PICTURE(2));
      ORDRE.NR:=ORDRENR;
      ORDRE.EMNENR:=EMNENR;
      GETRECX(ORDRE.A);
      IF IER=-6 THEN
        NONEXIST('Ordren')
      ELSE
      BEGIN
        CHECK0(ORDRE.A);
        EMNE.NR:=EMNENR;
        GETRECX(EMNE.A);CHECK0(EMNE.A);
        SALGSPRI:=ORDRE.SALGSPRI;
        LEVANTAL:=0;
        BESANTAL:=ORDRE.ANTALBES;
        LÆSFELT(PICTURE(4));
        SKRIVFELT(PICTURE(4));
 
 
        KUNDE.NR:=ORDRE.KUNDENR;
        GETREC(KUNDE.A);CHECK0(KUNDE.A);
 
        LØNOMK:=0.0;
        MASKOMK:=0.0;
 
        ORDRESTATUS;
        LÆSFELT(PICTURE(3));
        SKRIVFELT(PICTURE(3));
        MATOMK:=LEVANTAL*EMNE.NETTOVÆG;          (*LEVERET NETTOVÆGT*)
                                                 (* = SOLGT MÆNGDE*)
        RÅVARE.NR:=EMNE.MATNR;
        GETRECX(RÅVARE.A);CHECK0(RÅVARE.A);
        RÅVARE.OMSÆTP:=RÅVARE.OMSÆTP+RÅVARE.PRISKG*MATOMK/1000.0;
        RÅVARE.DBP:=RÅVARE.DBP+(RÅVARE.PRISKG-RÅVARE.KOSTPRIS)*MATOMK/1000.0;
        RÅVARE.KGSOLGT:=RÅVARE.KGSOLGT+MATOMK/1000.0;
 
        LÆSFELT(PICTURE(5));
        SKRIVFELT(PICTURE(5));                   (*FORBRUGT MÆNGDE*)
        RÅVARE.LAGER:=RÅVARE.LAGER-MATOMK/1000.0;
        RÅVARE.KGFORBRU:=RÅVARE.KGFORBRU+MATOMK/1000.0;
        PUTREC(RÅVARE.A);CHECK0(RÅVARE.A);
        MATOMK:=MATOMK/LEVANTAL;      (*MATERIALEFORBRUG PR. LEVERET*)
                                      (*INDGÅR I.ST.F. NETTOVÆGT I  *)
                                      (*SMELTEOMKOSTNINGSBEREGNING  *)
        EFTERKALK;
 
        EMNE.SAMSALG:=EMNE.SAMSALG+LEVANTAL*SALGSPRI;
        EMNE.DÆKBID:=EMNE.DÆKBID+LEVANTAL*(SALGSPRI-(LØNOMK+MATOMK+MASKOMK));
        (*EMNE.STKHSA,STKHBA UDSÆTTES*)
        PUTREC(EMNE.A);CHECK0(EMNE.A);
 
        OPTÆLRES;
        PLUSMINU:=-(MATOMK+LØNOMK+MASKOMK)+
                  (ORDRE.MATOMK+ORDRE.LØNOMK+ORDRE.MASKINOM);
        SLETORDRE;
 
        DATO:=SYSTEM.DAGSDATO;
        INSERT(A);CHECK0(A)
      END
    END
  UNTIL ORDRENR=0
END;
(*$P*)
BEGIN (*REGVEDL*)
  LONGNUL(1):=0;
  LONGNUL(2):=0;
  JA:=(.'J','j'.);
  NEJ:=(.'N','n'.);
  JAOGNEJ:=JA+NEJ;
  CLEARSCREEN;
  LÆSDESC;
  MODE:=3;(*SKRIV*)
  (*$R-*)
  RESS.A(-4):=0;    
  RESSGRUP.A(-4):=0;    
  KUNDE.A(-4):=0;
  EMNE.A(-4):=0;    
  RÅVARE.A(-4):=0;
  OPERA.A(-4):=0;   
  SYSTEM.A(-4):=0;
  PROD.A(-4):=0;             
  OMVPROD.A(-4):=0;          
  ORDRE.A(-4):=0;            
  KUNORDRE.A(-4):=0;         
  POST.A(-4):=0;
  REGLI.A(-4):=0;
  REBELAST.A(-4):=0;
  ORDTEKST.A(-4):=0;    
  RESS.A(-3):=4;    
  ORDTEKST.A(-3):=25;    
  RESSGRUP.A(-3):=3;    
  KUNDE.A(-3):=1;
  EMNE.A(-3):=2;    
  RÅVARE.A(-3):=5;
  OPERA.A(-3):=6;   
  SYSTEM.A(-3):=9;
  PROD.A(-3):=14;     
  OMVPROD.A(-3):=13;  
  ORDRE.A(-3):=10;    
  KUNORDRE.A(-3):=18; 
  POST.A(-3):=17;
  REGLI.A(-3):=16;
  REBELAST.A(-3):=15;
  (*$R+*)
  (*@@EVT. ÅBNING AF ANDRE ANDRE DATAFILER*)
  IOPEN(SYSTEM.A); CHECK0(SYSTEM.A); 
  SYSTEM.NR:=0;
  GETREC(SYSTEM.A);CHECK0(SYSTEM.A);
  ICLOSE(SYSTEM.A);
  IOPEN(RESS.A);     CHECK0(RESS.A);      
  IOPEN(RESSGRUP.A); CHECK0(RESSGRUP.A);     
  IOPEN(KUNDE.A);    CHECK0(KUNDE.A);     
  IOPEN(EMNE.A);     CHECK0(EMNE.A);      
  IOPEN(RÅVARE.A);   CHECK0(RÅVARE.A);    
  IOPEN(OPERA.A);    CHECK0(OPERA.A);     
  IOPEN(OMVPROD.A);  CHECK0(OMVPROD.A);   
  IOPEN(ORDTEKST.A); CHECK0(ORDTEKST.A);  
  IOPEN(ORDRE.A);    CHECK0(ORDRE.A);     
  IOPEN(KUNORDRE.A); CHECK0(KUNORDRE.A);  
  IOPEN(PROD.A);     CHECK0(PROD.A);      
  IOPEN(POST.A);     CHECK0(POST.A);      
  IOPEN(REGLI.A);    CHECK0(REGLI.A);     
  IOPEN(REBELAST.A); CHECK0(REBELAST.A);  
  WRITELN('BEMÆRK AT DETTE ER EN AFSLUTNING,');
  WRITELN('OG AT ALLE ORDRER, DER EFTERKALKULERES,');
  WRITELN('    B L I V E R    S L E T T E T');
  WRITELN('HUSK AT LØNLISTEN SKAL VÆRE UDSKREVET');
  WRITELN('MONTER BREDT PAPIR OG TRYK RETURN');
  READLN;
  MAINTAIN;
  ICLOSE(RESS.A);    
  ICLOSE(RESSGRUP.A);    
  ICLOSE(KUNDE.A);
  ICLOSE(EMNE.A);    
  ICLOSE(RÅVARE.A);
  ICLOSE(OPERA.A);   
  ICLOSE(OMVPROD.A); 
  ICLOSE(ORDTEKST.A); 
  ICLOSE(ORDRE.A);    
  ICLOSE(KUNORDRE.A);
  ICLOSE(PROD.A); 
  ICLOSE(POST.A);
  ICLOSE(REGLI.A);
  ICLOSE(REBELAST.A);
  CLEARSCREEN 
END;
(*$P*)
BEGIN
  SEMAFOR:='ALLOCOMBUF';
  I:=ORD(PARM^(1))-48;
  USERNIVEAU:=MENIG;
  WHILE I>0 DO
  BEGIN
    USERNIVEAU:=SUCC(USERNIVEAU);
    I:=I-1
  END;                                                                 (*$R-*)
  SNYD(-3):=0;
  FOR I:=6 DOWNTO 2 DO SNYD(-3):=10*SNYD(-3)+ORD(PARM^(I))-48;
  IF PARM^(7)='-' THEN SNYD(-3):=-SNYD(-3);                            (*$R+*)
  UDFØR(PTILMELD,SNYD);
  UDFØRT(PTILMELD,SNYD);
  IF IER<>0 THEN BAD(1,IER);
(*@@TILPASSES*)
  DESCNAVN:='EFTEPESC:P2:05:J';
  IF RESPRINT THEN
  BEGIN
    REGVEDL; 
    FREEPR 
  END;
  UDFØR(PAFMELD,SNYD);
  UDFØRT(PAFMELD,SNYD);
  IF IER<>0 THEN BAD(2,IER);
  FNAVN:='       ';
  FOR I:=1 TO 7 DO FNAVN(I):=PARM^(I);
  CHAIN('HOVED   *1',FNAVN,QUQ);
  IF IORESULT<>0 THEN WRITELN('IORESULT ',IORESULT)
END.

Full view