DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

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

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦6dcfb589c⟧ TextFile

    Length: 16512 (0x4080)
    Types: TextFile
    Names: »B1.PAS«

Derivation

└─⟦09ad82a35⟧ Bits:30002863 PolyPascal-80 V3.10 for JET80 CP/M
    └─ ⟦this⟧ »B1.PAS« 

TextFile

PROGRAM AY4_DATAOPSAMLINGSSYSTEM_MAINPROGRAM;
CONST
    DELIMLANG = 1;RAPHOVLANG = 1;
    HNDTYPLANG = 2; SEKNRLANG = 2;  FYLDNLANG = 2;
    SALDOLANG = 6;  DEBETLANG = 6;  BSVARLANG = 6;
    TIDSPLANG = 11;    IDLANG = 12; FTALLLANG = 20;
    AKTFEJLANG = 24;
    SKILLETEGN = ',';CODEORD='KSJ';
    MAXFEJL = 17;   (*ANTAL DEFINEREDE FEJLKODER*)

TYPE
    AYSTRDATA = RECORD
        TIDSP:STRING(.TIDSPLANG.);
        RAPHOV:STRING(.RAPHOVLANG.);
        ID:STRING(.IDLANG.);
        HNDTYP:STRING(.HNDTYPLANG.);
        SEKNR:STRING(.SEKNRLANG.);
        FYLDN:STRING(.FYLDNLANG.);
        SALDO:STRING(.SALDOLANG.);
        DEBET:STRING(.DEBETLANG.);
        BSVAR:STRING(.BSVARLANG.);
        AKTFEJ:STRING(.AKTFEJLANG.);
        FTALL:STRING(.FTALLLANG.);
        END;


    KALENDER = RECORD
        SEKUND:STRING(.2.);
        MINUT:STRING(.2.);
        TIMER:STRING(.2.);
        DAGNR:STRING(.1.);
        DATO:STRING(.2.);
        MANED:STRING(.2.);
        ARSTAL:STRING(.2.);
        NAVN:STRING(.7.);
        END;

    IDSTATUS = RECORD
        DELMARK:STRING(.1.);
        IDNUMMER:STRING(.12.);
        STATUS:STRING(.1.);
        END;

    JOBSTAT = RECORD
        JOB1:INTEGER; JOBTIME1:STRING(.4.);
        JOB2:INTEGER; JOBTIME2:STRING(.4.);
        JOB3:INTEGER; JOBTIME3:STRING(.4.);
        DAYFILENAME:STRING(.12.);
        END;

    STR1 = STRING(.1.);
    STR2 = STRING(.2.);
    STR6 = STRING(.6.);
    STR7 = STRING(.7.);
    STR12 = STRING(.12.);
    STR14 = STRING(.14.);

VAR
    TBUF:STR14;
    TAST,FUNKA,FUNKB: STR1;
    CODEOK: INTEGER;
    JOBDEF:JOBSTAT;
    DAG: KALENDER;

    JOBFIL:FILE OF JOBSTAT;
    DATAFIL: FILE OF AYSTRDATA;
    IDFIL:FILE OF IDSTATUS;
    MODTAGEFIL,TIMESETFIL: FILE;
    
PROCEDURE LAS_REALTIME_CLOCK;
BEGIN
    TBUF:='';
 
BEGIN CODE
$3E,$0F,$D3,$7B,$3E,$03,$D3,$7B,$21,TBUF,$3E,$0D,$77,$23,$0E,$0D,$3E,$01,
$77,$23,$0D,$20,$FB,$3E,$CF,$D3,$7B,$3E,$0F,$D3,$7B,$21,TBUF,$3E,$0D,$77,
$23,$0E,$0D,$7D,$E6,$0F,$57,$3E,$CF,$D3,$7B,$3E,$00,$D3,$7B,$7A,$F6,$90,
$D3,$79,$E6,$7F,$D3,$79,$3E,$36,$3D,$20,$FD,$3E,$CF,$D3,$7B,$3E,$0F,$D3,
$7B,$3E,$30,$D3,$79,$3E,$03,$3D,$20,$FD,$DB,$79,$E6,$0F,$57,$3E,$00,$D3,
$79,$7A,$77,$23,$0D,$20,$C6,$DD,$21,TBUF,$21,TBUF, $AF,$77 ,$16,$02,$1E,
$07,$23,
$06,$03,$4E,$23,$7E,$2B,$A3,$C6,$30,$77,$23,$DD,$34,$00,$79,$E6,$0F,$C6,
$30,$77,$23,$DD,$34,$00,$05,$20,$E7,$15,$28,$0E,$7E,$E6,$07,$C6,$30,$77,
$23,$DD,$34,$00,$1E,$0F,$18,$D4;
END;

   DAG.SEKUND:=COPY(TBUF,1,2);
   DAG.MINUT:=COPY(TBUF,3,2);
   DAG.TIMER:=COPY(TBUF,5,2);
   DAG.DAGNR:=COPY(TBUF,7,1);
   DAG.DATO:=COPY(TBUF,8,2);
   DAG.MANED:=COPY(TBUF,10,2);
   DAG.ARSTAL:=COPY(TBUF,12,2);
   IF DAG.DAGNR='0' THEN DAG.NAVN:='SØNDAG' ELSE
   IF DAG.DAGNR='1' THEN DAG.NAVN:='MANDAG' ELSE
   IF DAG.DAGNR='2' THEN DAG.NAVN:='TIRSDAG' ELSE
   IF DAG.DAGNR='3' THEN DAG.NAVN:='ONSDAG' ELSE
   IF DAG.DAGNR='4' THEN DAG.NAVN:='TORSDAG' ELSE
   IF DAG.DAGNR='5' THEN DAG.NAVN:='FREDAG' ELSE
   IF DAG.DAGNR='6' THEN DAG.NAVN:='LØRDAG' ELSE
   DAG.DAGNR:='ERRORDG';
END;


PROCEDURE RESET_IDSTATUS;
VAR
    IDRESET:IDSTATUS;
BEGIN
    ASSIGN(IDFIL,'IDSTAT.DAT');
    RESET(IDFIL);
    WHILE NOT EOF(IDFIL) DO
    BEGIN
        READ(IDFIL,IDRESET);
        IF IDRESET.STATUS<>'*' 
        THEN
           WRITELN('DØGNRAPPORT IKKE MODTAGET FRA AY4 IDNUMMER:  '
           ,IDRESET.IDNUMMER)
        ELSE BEGIN
           SEEK(IDFIL,POSITION(IDFIL)-1);
           IDRESET.STATUS:=' ';
           WRITE(IDFIL,IDRESET);
        END;
    END;
    CLOSE(IDFIL);
END;

PROCEDURE FJERN_ID_FRA_TABEL;
VAR
    FUNKB:STR1;
    SLETNR:STR12;
    FUND,I,N:INTEGER;
    IDRECORD:IDSTATUS;
    NYFIL:FILE OF IDSTATUS;        
BEGIN
    FUNKB:=' ';
    WHILE FUNKB<>'' DO BEGIN
      WRITELN(CLRHOM);
      WRITELN('     ',RVSON,'LIST ELLER SLET NUMRE I IDENTIFIKATIONSNUMMERTABEL',
              RVSOFF);
      WRITELN;
      WRITELN('           (L)     LIST NUMRE I ID-TABEL');
      WRITELN;
      WRITELN('           (D)     SLET NUMMER I ID-TABEL');
      WRITELN;
      WRITELN('        <RETURN>   RETUR TIL HOVEDMENU');
      WRITELN;
      WRITE('           ( )     INDTAST SYMBOL FOR FUNKTION',^Æ,'=),');
      READLN(FUNKB);
      IF FUNKB='L' THEN
      BEGIN
          WRITELN(CLRHOM);
          ASSIGN(IDFIL,'IDSTAT.DAT');
          RESET(IDFIL);
          N:=0;
          WRITELN('RECORDNR:   ID-NR:         MARK:');
          WHILE NOT EOF(IDFIL) DO
          BEGIN
              READ(IDFIL,IDRECORD);
              WRITELN(POSITION(IDFIL),'           ',
                  IDRECORD.IDNUMMER,'   ',IDRECORD.STATUS);
              N:=N+1;
              IF N=20 THEN
              BEGIN
                 WRITELN;
                 WRITELN;
                 WRITELN;
                 TAST:='';
                 WHILE TAST<>' ' DO
                 BEGIN
                      WRITE(^Æ,'=7 ','TRYK <SPACE> FOR AT FORTSÆTTE');
                      TAST:=CHR(BDOSB(1));
                 END;
              END;
              N:=0
          END;
          CLOSE(IDFIL);
          TAST:='';
          WHILE TAST<>' ' DO
          BEGIN
               WRITE(^Æ,'=7 ','TRYK <SPACE> FOR AT FORTSÆTTE');
               TAST:=CHR(BDOSB(1));
          END;
      END ELSE
      IF FUNKB='D' THEN
      BEGIN
          ASSIGN(IDFIL,'IDSTAT.DAT');     RESET(IDFIL);
          WRITELN(CLRHOM);
          WRITELN;
          WRITE('HVILKET IDNUMMER ØNSKES SLETTET?  ');READLN(SLETNR);
          IF SLETNR<>'' THEN
          BEGIN
              I:=0;
              WHILE NOT EOF(IDFIL) DO
              BEGIN
                  READ(IDFIL,IDRECORD);
                  FUND:=POS(SLETNR,IDRECORD.IDNUMMER);
                  IF FUND<>0 THEN
                  BEGIN
                      I:=I+1;
                      IDRECORD.DELMARK:='*';
                      SEEK(IDFIL,POSITION(IDFIL)-1);
                      WRITE(IDFIL,IDRECORD);
                  END;
              END;
              CLOSE(IDFIL);
              IF I<>0 THEN
              BEGIN
                  ASSIGN(NYFIL,'IDSTAT.TMP');         REWRITE(NYFIL);
                  ASSIGN(IDFIL,'IDSTAT.DAT');         RESET(IDFIL);
                  WHILE NOT EOF(IDFIL) DO 
                      BEGIN
                      READ(IDFIL,IDRECORD);
                      IF IDRECORD.DELMARK<>'*' THEN WRITE(NYFIL,IDRECORD);
                      END;
                  CLOSE(IDFIL);       CLOSE(NYFIL);
                  ERASE(IDFIL);       RENAME(NYFIL,'IDSTAT.DAT');
                  WRITELN('ID-NUMMER ',RVSON,SLETNR,RVSOFF,
                          ' ER HERMED SLETTET I TABEL');
              END ELSE
              BEGIN
                  WRITELN('IDNUMMER IKKE FUNDET I TABEL!');
              END;
              TAST:='';
              WHILE TAST<>' ' DO
              BEGIN
                   WRITE(^Æ,'=7 ','TRYK <SPACE> FOR AT FORTSÆTTE');
                   TAST:=CHR(BDOSB(1));
              END;
          END;
      END;
   END;
END;

PROCEDURE INIT_DATAFIL;
BEGIN
        ASSIGN(JOBFIL,'JOBSTAT.DAT');
        RESET(JOBFIL);
        READ(JOBFIL,JOBDEF);
        CLOSE(JOBFIL);

     ASSIGN(DATAFIL,'B:'+JOBDEF.DAYFILENAME+'.DAT');
     REWRITE(DATAFIL);
     CLOSE(DATAFIL);
END;


PROCEDURE SKRIV_NY_IDFIL;
BEGIN
     ASSIGN(IDFIL,'IDSTAT.DAT');
     REWRITE(IDFIL);
     CLOSE(IDFIL);
END;

PROCEDURE SET_JOBTIDER;
VAR
        VALID,I,TIMEVALID:INTEGER;
        TIME3,TIME1,TIME2:STRING(.4.);
BEGIN
        ASSIGN(JOBFIL,'JOBSTAT.DAT');
        RESET(JOBFIL);
        READ(JOBFIL,JOBDEF);
        CLOSE(JOBFIL);
        WRITELN(CLRHOM);
        VALID:=0;
        WRITELN(CLRHOM);
        WHILE VALID=0 DO
        BEGIN
            WRITELN;
            WRITELN('TIDSPUNKT FOR UDSKRIFT AF MANGLENDE DØGNRAPPORTER');
            WRITELN;
            WRITELN('TIDSPUNKT ER NU:  ',JOBDEF.JOBTIME1);
            WRITELN;
            WRITE('INDTAST NY TID (TTMM) ELLER <RETURN> FOR INGEN ÆNDRING: ');
            READLN(TIME1);
            VAL(TIME1,TIMEVALID,I);
            IF I=0 THEN
            IF TIMEVALID>=0 THEN IF TIMEVALID<=2359 THEN VALID:=1 ELSE
            IF TIME1='' THEN VALID:=1 ELSE VALID:=0;
            WRITELN;
            WRITELN;
        END;

        IF TIME1<>'' THEN 
        BEGIN
           JOBDEF.JOBTIME1:=COPY(TIME1,3,2);
           JOBDEF.JOBTIME1:=JOBDEF.JOBTIME1+COPY(TIME1,1,2);
           WRITELN(RVSON,'NY TID FOR UDSKRIFT AF MANGLENDE DØGNRAPPORTET ',
           '(AKTIONSTID 1):  ',JOBDEF.JOBTIME1,RVSOFF);
        END ELSE
        WRITELN(RVSON,'UÆNDRET TID FOR UDSKRIFT AF MANGLENDE DØGNRAPPORTER',
                ' (AKTIONSTID 1):  ', JOBDEF.JOBTIME1,RVSOFF);
        VALID:=0;
        TAST:='';
        WHILE TAST<>' ' DO
        BEGIN
             WRITE(^Æ,'=7 ','TRYK <SPACE> FOR AT FORTSÆTTE');
             TAST:=CHR(BDOSB(1));
        END;
        WRITELN(CLRHOM);
        WHILE VALID=0 DO
        BEGIN
            WRITELN;
            WRITELN('TIDSPUNKT FOR SKIFT AF DATAFILNAVN (DAYFILENAME)');
            WRITELN;
            WRITELN('TIDSPUNKT ER NU:  ',JOBDEF.JOBTIME2);
            WRITELN;
            WRITE('INDTAST NY TID (TTMM) ELLER <RETURN> FOR INGEN ÆNDRING: ');
            READLN(TIME2);
            VAL(TIME2,TIMEVALID,I);
            IF I=0 THEN
            IF TIMEVALID>=0000 THEN IF TIMEVALID<=2359 THEN VALID:=1 ELSE
            IF TIME2='' THEN VALID:=1 ELSE VALID:=0;
            WRITELN;
            WRITELN;

        END;
        IF TIME2<>'' THEN 
        BEGIN
           JOBDEF.JOBTIME2:=COPY(TIME2,3,2);
           JOBDEF.JOBTIME2:=JOBDEF.JOBTIME2+COPY(TIME2,1,2);
           WRITELN(RVSON,'NY TID FOR SKIFT AF DAYFILENAVN (AKTIONSTID 2):  ',
           JOBDEF.JOBTIME2,RVSOFF);
        END ELSE
           WRITELN(RVSON,'UÆNDRET TID FOR SKIFT AF DAYFILENAVN',
           ' (AKTIONSTID 2):  ',JOBDEF.JOBTIME2,RVSOFF);

        VALID:=0;
        BEGIN
             WRITE(^Æ,'=7 ','TRYK <SPACE> FOR AT FORTSÆTTE');
             TAST:=CHR(BDOSB(1));
        END;
        WRITELN(CLRHOM);
        WHILE VALID=0 DO
        BEGIN
            WRITELN;
            WRITELN('TIDSPUNKT FOR RESET AF JOBSTATUS');
            WRITELN;
            WRITELN('TIDSPUNKT ER NU:  ',JOBDEF.JOBTIME3);
            WRITELN;
            WRITE('INDTAST NY TID (TTMM) ELLER <RETURN> FOR INGEN ÆNDRING: ');
            READLN(TIME3);
            VAL(TIME3,TIMEVALID,I);
            IF I=0 THEN
            IF TIMEVALID>=0000 THEN IF TIMEVALID<=2359 THEN VALID:=1 ELSE
            IF TIME3='' THEN VALID:=1 ELSE VALID:=0;
            WRITELN;
            WRITELN;
        END;

        IF TIME3<>'' THEN 
        BEGIN
           JOBDEF.JOBTIME3:='';
           JOBDEF.JOBTIME3:=COPY(TIME3,3,2);
           JOBDEF.JOBTIME3:=JOBDEF.JOBTIME3+COPY(TIME3,1,2);
           WRITELN(RVSON,'NY TID FOR RESET AF JOBSTATUS (AKTIONSTID 3):  ',
           JOBDEF.JOBTIME3,RVSOFF);
        END ELSE
           WRITELN(RVSON,'UÆNDRET TID FOR RESET AF JOBSTATUS',
           ' (AKTIONSTID 3):  ',JOBDEF.JOBTIME3,RVSOFF);
        BEGIN
             WRITE(^Æ,'=7 ','TRYK <SPACE> FOR AT FORTSÆTTE');
             TAST:=CHR(BDOSB(1));
        END;

        ASSIGN(JOBFIL,'JOBSTAT.DAT');
        RESET(JOBFIL);
        WRITE(JOBFIL,JOBDEF);
        CLOSE(JOBFIL);

END;


PROCEDURE SYSTEMMENU;
BEGIN
        WRITELN(CLRHOM);
        WRITELN;
        WRITELN('         ',RVSON,'DATAOPSAMLINGSSYSTEM FOR AY4',
               ' MØNTTELEFONER',RVSOFF);
        WRITELN;WRITELN;
        
        WRITELN('           <RETURN>  EXIT SYSTEM DEFINITIONER');
        WRITELN;
        WRITELN('           *  (1)    INDSTIL SYSTEMETS REALTIMECLOCK');
        WRITELN('              (2)    LIST/SLET IDENTIFIKATION I TABEL');
        WRITELN('              (3)    DEFINERE TIDSPARAMETRE');
        WRITELN('              (4)    OPRET IDENTIFIKATIONSNUMMER TABEL');
        WRITELN('              (5)    OPRET DATAFIL');
        WRITELN('              (6)    OPRET JOBSTATFIL');
        WRITELN;
        WRITELN;
        WRITELN;
        WRITE('              ( ) VÆLG FUNKTION');WRITE(^Æ,'=0/');
        READLN(FUNKB);
        END;

PROCEDURE MAINMENU;
BEGIN
        WRITELN(CLRHOM);
        WRITELN;
        WRITELN('         ',RVSON,'DATAOPSAMLINGSSYSTEM FOR AY4 MØNTTELEFONER'
                ,RVSOFF);
        WRITELN;
        WRITELN;
        WRITELN('              <RETURN>  START SYSTEM');
        WRITELN;
        WRITELN('                (0)     EXIT SYSTEM');
        WRITELN;
        WRITELN('                (1)     SKIFT DATA DISKETTE');
        WRITELN;
        WRITELN('                (2)     LIST/SLET NUMRE I ID-TABEL');
        WRITELN;
        WRITELN('                (9)     SYSTEM PARAMETRE');
        WRITELN;
        WRITELN;
        WRITE('                ( )     INDTAST FUNKTION');
        WRITE(^Æ,'=01'); READLN(FUNKA);
END;

PROCEDURE CODE_CHECK;
VAR
        KAR:INTEGER;
        CODE1,CODE2,CODE3,LEVEL1:STRING(.1.);
        CODETOT:STRING(.3.);
BEGIN
        WRITELN(CLRHOM);
        CODE1:=''; CODE2:=''; CODE3:=''; CODETOT:='';
        WRITE(^Æ,'=.(');        
        WRITE(RVSON,' HAR DU FORSTAND PÅ DET ',BLKON,'?',
        	BLKOFF,RVSOFF,' (J/N) ');
        READLN(LEVEL1);
        IF LEVEL1='J' THEN BEGIN
            CODETOT:='';
            WRITELN(CLRHOM);
            WRITE(^Æ,'=.(');
            WRITE('INDTAST KODE:');
            KAR:=BDOSB(1);    CODE1:=CHR(KAR);    WRITE(^H,' ');
            KAR:=BDOSB(1);    CODE2:=CHR(KAR);    WRITE(^H,' ');
            KAR:=BDOSB(1);    CODE3:=CHR(KAR);    WRITE(^H,' ');
            CODETOT:=CODE1+CODE2+CODE3;
            IF CODETOT=CODEORD THEN CODEOK:=1 ELSE CODEOK:=0;
            END ELSE CODEOK:=0;
END;                

PROCEDURE INIT_JOBSTATFIL;
BEGIN
        JOBDEF.JOB1:=0;
        JOBDEF.JOBTIME1:='0007';
        JOBDEF.JOB2:=0;
        JOBDEF.JOBTIME2:='0000';
        JOBDEF.JOB3:=0;
        JOBDEF.JOBTIME3:='3017';
        JOBDEF.DAYFILENAME:='';
        JOBDEF.DAYFILENAME:=DAG.ARSTAL+DAG.MANED+DAG.DATO;
        ASSIGN(JOBFIL,'JOBSTAT.DAT');
        REWRITE(JOBFIL);
        WRITE(JOBFIL,JOBDEF);
        CLOSE(JOBFIL);
END;

PROCEDURE SYSTEM;       
BEGIN
    FUNKB:=' ';
    WHILE FUNKB<>'' DO
    BEGIN
    LAS_REALTIME_CLOCK;
    WRITELN(^Æ,'= Q',RVSON,DAG.DATO,'/',DAG.MANED,'-',
            DAG.ARSTAL,'   KL. ',DAG.TIMER,':',
            DAG.MINUT,':',DAG.SEKUND,RVSOFF);
    SYSTEMMENU;
    IF FUNKB='1' THEN BEGIN
                 ASSIGN(TIMESETFIL,'TIME10.COM S');
                 EXECUTE(TIMESETFIL)
                 END ELSE
    IF FUNKB='2' THEN FJERN_ID_FRA_TABEL ELSE
    IF FUNKB='3' THEN SET_JOBTIDER ELSE
    IF FUNKB='4' THEN SKRIV_NY_IDFIL ELSE
    IF FUNKB='5' THEN INIT_DATAFIL ELSE
    IF FUNKB='6' THEN INIT_JOBSTATFIL;
    END;                 
END;

PROCEDURE SKIFT_DATADISK;
VAR
	FUNKC:STRING(.2.);
BEGIN
	WRITELN(CLRHOM);
	WRITELN('               ',RVSON,'SKIFT AF DATADISKETTE',RVSOFF);
	WRITELN;
        WRITELN;
	WRITELN('       INDSÆT TOM FORMATERET DISKETTE I DRIVE B:');
	WRITELN;
	WRITELN;
	WRITELN('       TRYK: ',RVSON,'OK <RETURN>',RVSOFF,' NÅR DISK KLAR');
	WRITELN;
	WRITELN(        'ELLER');
	WRITELN;
	WRITELN('       TRYK:   ',RVSON,'<RETURN>',RVSOFF,'  FOR RETUR TIL MENU');
	WRITELN;
	WRITE('         INDTAST FUNKTION: ');  READLN(FUNKC);
	IF FUNKC='OK' THEN INIT_DATAFIL;
END;
	
BEGIN
    WHILE FUNKA<>'0' DO
    BEGIN
    LAS_REALTIME_CLOCK;
    WRITELN(^Æ,'=!!',RVSON,DAG.DATO,'/',DAG.MANED,'-',
            DAG.ARSTAL,'   KL. ',DAG.TIMER,':',
            DAG.MINUT,':',DAG.SEKUND,RVSOFF);
    MAINMENU;
    IF FUNKA='1' THEN SKIFT_DATADISK ELSE
    IF FUNKA='2' THEN FJERN_ID_FRA_TABEL ELSE
    IF FUNKA='9' THEN BEGIN
                      CODE_CHECK;
                      IF CODEOK=1 THEN SYSTEM ELSE WRITELN(^G);
                   END ELSE
    IF FUNKA='' THEN BEGIN
                 ASSIGN(MODTAGEFIL,'A2-300-2.COM');
                 EXECUTE(MODTAGEFIL);
                 END
    END;                 

END.
«eof»