|
|
DataMuseum.dkPresents historical artifacts from the history of: Q1 computer |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Q1 computer Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 21804 (0x552c)
Types: Q1_Text, reclen=79
Notes: q1file
Names: »V31«
└─⟦256585323⟧ Bits:30008759 50001598
└─⟦this⟧ »V31«
/* V3 ÄR ETT PROGRAM FÖR ÄNDRING OCH UPPLÄGGNING AV KONTO,UKONTU & SKKONTO
"F2" REGISTRERAR POSTEN
"F4" SÖKER NY POST
RUTINEN KONTROLERAR FÖRSTA SIFFRAN I KONTONUMMER
VERSION 1:2 Knytning av unik UKTO-tabell till visst konto. 800701.
PRG JÅ 780906 */
/*DCL DUMM(30) CHAR(120); */
DCL 1 KONTOSTR,
2 KONTO5 CHAR(5),
2 SDATUM5 FIXED(6),
2 TEXT5 CHAR(32),
2 UHMARK5 CHAR(1),
2 LISTB BINARY,
2 IKB BINARY;
/* 46 BYTES */
DCL 1 UKSTR,
2 KONTO3 CHAR(3),
2 SDATUM3 FIXED(6),
2 TEXT CHAR(32),
2 UHMARK CHAR(1);
/* 40 BYTES */
DCL 1 FSTR,
2 FIL1 FILE;
DCL 1 STR,
2 XN CHAR(24) INIT(' KONTOP ');
DCL SFLAGG BINARY INIT(0),
RFLAGG BINARY,
T3 CHAR(3),
T5 CHAR(5),
T8 CHAR(8),
T21 CHAR(21) INIT('12345 0123456789'),
T27 CHAR(27) INIT('SORT KONTOP SORTFIL 5 0 Q'),
T29 CHAR(29) INIT('SDATUM UM LISTM UK IK-SLAG'),
LISTM CHAR(5),
UK CHAR(1),
IKSLAG CHAR(10),
SDATUM CHAR(6),
BUFF CHAR(32),
TOM CHAR(32) INIT(' '),
UKTOLEDTEXT CHAR (32) INIT ('A-C-E-G-I-K-M-O-Q-S-U-X-Z1-3-5-7'),
FIL BINARY,
FRTYP BINARY,
DATUM CHAR(6),
P POINTER,
D BASED(P) CHAR(6),
PP POINTER,
1 STRX BASED(PP),
2 X CHAR(2),
2 Y CHAR(2),
2 FIRMA CHAR(1);
FILGEN:PROC;
LISTB=0;
IKB=0;
J=1;
DO I=1 TO 5;
IF SUBSTR(LISTM,I,1)='1' THEN LISTB=LISTB+J;
J=J*2;
END;
J=1;
DO I=1 TO 10;
IF SUBSTR(IKSLAG,I,1)¬=' ' THEN IKB=IKB+J;
J=J*2;
END;
IF UK='1' THEN IKB=IKB+J;
KONTO5=T5;
SDATUM5=SDATUM;
TEXT5=TEXT;
UHMARK5=UHMARK;
RETURN;
END;
STRGEN:PROC;
LISTM=TOM;
IKSLAG=TOM;
J=1;
DO I=1 TO 5;
IF (J&LISTB)=J THEN SUBSTR(LISTM,I,1)='1';
J=J*2;
END;
J=1;
DO I=0 TO 9;
UK=I;
IF (J&IKB)=J THEN SUBSTR(IKSLAG,I+1,1)=UK;
J=J*2;
END;
UK=' ';
IF (J & IKB) = J THEN UK='1';
SDATUM=SDATUM5;
TEXT=TEXT5;
UHMARK=UHMARK5;
RETURN;
END;
KONTOIN:PROC;
PUT FILE(D) SKIP EDIT(' KONTO')(A(96));
K1: GET SKIP LIST(T5);
IF T5=' ' THEN GO TO SLUT;
IF (FIL=1) & (SUBSTR(T5,1,1)¬=FIRMA) THEN DO;
CALL OUTPUT(1,6);
GO TO K1;
END;
IF FIL=1 THEN DO;
PUT FILE(D) EDIT(T5)(A);
ON ERROR GO TO FEL;
READ KEY(T5) FILE(FIL1) INTO(KONTOSTR);
CALL STRGEN;
END;
ELSE DO;
T3=T5;
PUT FILE(D) EDIT(T3)(A);
ON ERROR GO TO FEL;
READ KEY(T3) FILE(FIL1) INTO(UKSTR);
SDATUM=SDATUM3;
END;
RFLAGG=0;
IF SDATUM='0' THEN SDATUM=' ';
RETURN;
FEL: RFLAGG=1;
TEXT=TOM;
SDATUM=TOM;
UHMARK=TOM;
LISTM=TOM;
UK=TOM;
IKSLAG=TOM;
RETURN;
END;
DISPPUT:PROC;
J=9;
CALL MOVEBUFF(J);
IF FIL=1 THEN PUT FILE(D) EDIT(T29)(A(58))(T21)(A);
ELSE PUT FILE(D) EDIT(T29)(A(10));
J=111;
CALL MOVEBUFF(J);
PUT FILE(D) EDIT(UHMARK)(A(3));
IF FIL=1 THEN DO;
PUT FILE(D) EDIT(LISTM)(A(7))(UK)(A(4))(IKSLAG)(A);
END;
J=237;
CALL MOVEBUFF(J);
PUT FILE(D) EDIT('TEXT')(A);
IF FIL = 2 THEN DO;
J = 284;
CALL MOVEBUFF (J);
PUT FILE (D) EDIT (UKTOLEDTEXT) (A);
END;
J=331;
CALL MOVEBUFF(J);
PUT FILE(D) EDIT(TEXT)(A);
J=103;
CALL MOVEBUFF(J);
CALL TYPIST(SDATUM,6);
CALL TYPIST('┣10┫',1);
CALL CORED(0);
FRTYP=1;
RETURN;
END;
FRAEGA:PROC;
DCL JJ(6) BINARY INIT(103,111,114,121,125,331);
J=JJ(FRTYP);
CALL MOVEBUFF(J);
IF FRTYP=1 THEN CALL TYPIST(SDATUM,6);
IF FRTYP=2 THEN CALL TYPIST(UHMARK,1);
IF FRTYP=3 THEN CALL TYPIST(LISTM,5);
IF FRTYP=4 THEN CALL TYPIST(UK,1);
IF FRTYP=5 THEN CALL TYPIST(IKSLAG,10);
IF FRTYP=6 THEN CALL TYPIST(TEXT,32);
CALL TYPIST('┣10┫',1);
RETURN;
END;
SVAR:PROC;
DCL JJJ(6) BINARY INIT(6,1,5,1,10,32);
IF FRTYP=1 THEN SDATUM=BUFF;
IF FRTYP=2 THEN UHMARK=BUFF;
IF FRTYP=3 THEN LISTM=BUFF;
IF FRTYP=4 THEN UK=BUFF;
IF FRTYP=5 THEN IKSLAG=BUFF;
IF FRTYP=6 THEN TEXT=BUFF;
PUT FILE(D) EDIT(BUFF)(A(JJJ(FRTYP)));
FRTYP=FRTYP+1;
IF FRTYP=3 & FIL¬=1 THEN FRTYP=6;
IF FRTYP=7 THEN FRTYP=1;
RETURN;
END;
GO TO START;
UT:
CALL SVAR;
IF FIL=1 THEN DO; /* KONTOFILEN */
CALL FILGEN;
IF RFLAGG=1 THEN DO; /* SKRIVN AV TILLKOMMANDE POST*/
CALL SEOF(FIL1);
IF UNSPEC(FIL1)=0 THEN OPEN FIL1;
WRITE FILE(FIL1) FROM(KONTOSTR);
CLOSE FIL1;
OPEN FIL1;
SFLAGG=1;
END;
ELSE DO;
REWRITE FILE(FIL1) FROM(KONTOSTR); /*ÅTERSKR. AV BEFINTL. POST */
END;
END;
ELSE DO;
SDATUM3=SDATUM;
KONTO3=T3; /* SKRIVN. AV UKTO- KSFILERNA */
IF RFLAGG=1 THEN DO;
CALL SEOF(FIL1);
IF UNSPEC(FIL1)=0 THEN OPEN FIL1;
WRITE FILE(FIL1) FROM(UKSTR);
CLOSE FIL1;
OPEN FIL1;
SFLAGG=1;
END;
ELSE DO;
REWRITE FILE(FIL1) FROM(UKSTR);
END;
END;
GO TO L1;
/* H Ä R B Ö R J A R H U V U D P R O G R A M M E T */
START:
UNSPEC(P)=16570;
UNSPEC(PP)=16616;
CALL DATCHECK(DATUM);
IF DATUM='0 ' THEN GO TO SLUT;
D='0';
FIL=Y;
IF FIL=2 THEN XN=' UKONTOP ';
IF FIL=3 THEN XN=' KSKONTOP';
FSTR=STR;
OPEN FIL1;
L1: CALL KONTOIN;
CALL DISPPUT;
L3: GET SKIP LIST(BUFF);
CALL KEYFUN(KEYT);
IF KEYT=20 THEN GO TO L1;
IF KEYT=18 THEN GO TO UT;
CALL SVAR;
CALL FRAEGA;
GO TO L3;
SLUT:
D=DATUM;
IF SFLAGG=0 THEN DO;
CALL PLOAD('Q ');
GO TO SLUT1;
END;
IF FIL¬=1 THEN DO;
T8=SUBSTR(XN,3,8);
SUBSTR(T27,6,8)=T8;
SUBSTR(T27,23,1)='3';
END;
CALL LOAD(T27,27);
SLUT1:END;