|
DataMuseum.dkPresents historical artifacts from the history of: Jet Computer Jet80 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Jet Computer Jet80 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 16512 (0x4080) Types: TextFile Names: »B1.BAK«
└─⟦09ad82a35⟧ Bits:30002863 PolyPascal-80 V3.10 for JET80 CP/M └─ ⟦this⟧ »B1.BAK«
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.COM'); EXECUTE(MODTAGEFIL); END END; END. «eof»