|
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: 15642 (0x3d1a) Types: Q1_Text, reclen=79 Notes: q1file Names: »KONTUT_S«
└─⟦28699d361⟧ Bits:30008635 DDMQ1-0074_Bokrut_diskett_2_Kopia_JÅ_800504_PL1_LMC └─⟦this⟧ »KONTUT_S« └─⟦45145b6cc⟧ Bits:30008636 DDMQ1-0075_Bokrut_diskett_2_Original_JÅ_800504_PL1_LMC └─⟦this⟧ »KONTUT_S«
/* KONTUT ÄR ENRUTIN FÖR UTSKRIFT AV SMMTLIGA KONTERINGAR UNDER EN MÅNAD BEGRÄNSNINGARNA ANGES SOM KONTO OCH AVDELNINGS GRÄNSER EN ELLER FLERA MÅNADER KAN OMFATTAS AV RAPPORTEN PRG JÅ 800504 */ DCL FILNAMN CHAR(1), FIL FILE, 1 VER_STR, 2 VER_ID, 3 KONTO FIXED(4), 3 AVD CHAR(3), 2 DAT FIXED(4), 2 VERNR FIXED(7), 2 VTXT CHAR(20), 2 BEL FIXED(11,2), 2 KOD CHAR(1), 1 IN_STR(64), 2 CH CHAR(40), IN_SIZE BINARY INIT(64), DATUM CHAR(6), D_T BINARY INIT(37), VERSION CHAR(37) INIT('KONTUT Version 1.1 800504'), 1 S_STR, 2 SKONTO FIXED(4), 2 SAVD CHAR(3), 1 E_STR, 2 EKONTO FIXED(4), 2 EAVD CHAR(3), T8 CHAR(8), SLUT BINARY, OK BINARY, MAX_P_FIL BINARY INIT(0), MAX_P_STR BINARY INIT(0), POS_STR BINARY INIT(0), SDEB FIXED(11,2) INIT(0), SKRE FIXED(11,2) INIT(0), TDEB FIXED(11,2) INIT(0), TKRE FIXED(11,2) INIT(0), RAD BINARY INIT(0), SIDA BINARY INIT(1), C CHAR(16) INIT('-----------9V.99'), 1 DATREC, 2 FIRMA_NAMN CHAR(20) INIT(' '); START:PROC; PUT FILE(D) SKIP EDIT(VERSION)(A(D_T*2))('DAGENS DATUM')(A(D_T-6)); GET SKIP LIST(DATUM); PUT FILE(D) EDIT(DATUM)(A(6)); RETURN; END; RUB:PROC; PUT SKIP(RAD+3) EDIT(FIRMA_NAMN)(A) SKIP(2) EDIT ('KONTOUTDRAG OMFATTANDE KONTO ')(A)(SKONTO)(A(5))(SAVD)(A)(' TILL ') (A)(EKONTO)(A(5))(EAVD)(A(10))('MÅNAD ')(A) (SUBSTR(FILNAMN,4,8))(A)(' DATUM ')(A)(DATUM)(A)(' SIDA ')(A) (SIDA)(A) SKIP(2) EDIT('VER.NR TEXT')(A(33)) ('BOKF.DATUM KONTO AVD. ')(A) ('DEBET KREDIT')(A) SKIP; RAD=40; SIDA=SIDA+1; RETURN; END; SKRIV_MON_SUM:PROC; PUT SKIP(2) EDIT('TOTALT UNDER MÅNADEN:')(A(57))(SDEB)(PC)(SKRE)(PC); RAD=RAD-2; SDEB=0; SKRE=0; RETURN; END; DO_EXIT:PROC; PUT SKIP(2) EDIT('TOTALT')(A(57))(TDEB)(PC)(TKRE)(PC) SKIP(RAD-2); STOP; END; GET_KONTO:PROC; PUT FILE(D) EDIT('FRÅN OCH MED KONTO AVD')(A(D_T-8)); GET SKIP LIST(T8); SKONTO=SUBSTR(T8,1,4); SAVD=SUBSTR(T8,5,3); PUT FILE(D) EDIT(SKONTO)(A(5))(SAVD)(A(3))('TILL OCH MED KONTO AVD') (A(D_T-8)); GET SKIP LIST(T8); EKONTO=SUBSTR(T8,1,4); EAVD=SUBSTR(T8,5,3); PUT FILE(D) EDIT(EKONTO)(A(5))(EAVD)(A(3)); RETURN; END; GET_FIL:PROC; IF SUBSTR(FILNAMN,4,8) = 'FIL ' THEN PUT FILE(D) EDIT('VILKEN MÅNAD (te.x. JAN FEB)')(A(D_T-3)); OPEN_LOOP: IF SUBSTR(FILNAMN,4,8) ¬= 'FIL ' THEN CALL OUTPUT(1,6); GET SKIP LIST(T8); IF T8 = ' ' THEN CALL DO_EXIT; SUBSTR(FILNAMN,4,8)=T8; ON ERROR GO TO OPEN_LOOP; OPEN FIL; CALL SEOF(FIL); MAX_P_FIL=UNSPEC(FIL); UNSPEC(FIL)=0; SLUT=0; CALL RUB; RETURN; END; GET_POST:PROC; IF POS_STR = MAX_P_STR THEN DO; IF MAX_P_FIL = 0 THEN DO; SLUT=1; RETURN; END; ELSE DO; ON ENDFILE GO TO VIDARE; READ FILE(FIL) INTO(IN_STR); VIDARE: MAX_P_STR=IN_SIZE; IF MAX_P_STR > MAX_P_FIL THEN MAX_P_STR=MAX_P_FIL; MAX_P_FIL=MAX_P_FIL-MAX_P_STR; POS_STR=1; END; END; ELSE DO; POS_STR=POS_STR+1; END; VER_STR=IN_STR(POS_STR); RETURN; END; DO_KONT_TEST:PROC; OK=1; IF KONTO < SKONTO ö KONTO > EKONTO THEN OK=0; IF SAVD ¬= ' ' & AVD < SAVD THEN OK=0; IF EAVD ¬= ' ' & AVD > EAVD THEN OK=0; RETURN; END; SKRIV_RAD:PROC; IF RAD < 7 THEN CALL RUB; PUT SKIP EDIT(VERNR)(A(10))(VTXT)(A(28))(DAT)(P'99.99',X(3))(KONTO) (A(7))(AVD)(A(4)); IF KOD = 'K' THEN DO; PUT EDIT(' ')(A(15)); SKRE=SKRE+BEL; TKRE=TKRE+BEL; END; IF KOD = 'D' THEN DO; SDEB=SDEB+BEL; TDEB=TDEB+BEL; END; PUT EDIT(BEL)(PC); RAD=RAD-1; RETURN; END; /* H Ä R B Ö R J A R H U V U D P R O G R A M M E T */ CALL START; CALL GET_KONTO; FILE_LOOP: CALL GET_FIL; POST_LOOP: CALL GET_POST; IF SLUT THEN DO; CALL SKRIV_MON_SUM; GO TO FILE_LOOP; END; CALL DO_KONT_TEST; IF OK THEN CALL SKRIV_RAD; GO TO POST_LOOP; END;