|
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: 12166 (0x2f86) Types: Q1_Text, reclen=79 Notes: q1file Names: »KONTUT_T«
└─⟦45145b6cc⟧ Bits:30008636 DDMQ1-0075_Bokrut_diskett_2_Original_JÅ_800504_PL1_LMC └─⟦this⟧ »KONTUT_T«
/* 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Å 800609 */ DCL FILNAMN CHAR(1), INFIL FILE, 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), D_T BINARY INIT(37), VERSION CHAR(37) INIT('KONTUT Version 2.1 800609'), 1 BREC, 2 FILLER FIXED(11) INIT(0), 2 DATUM CHAR(6), 2 S_STR, 3 SKONTO FIXED(4), 3 SAVD CHAR(3), 2 E_STR, 3 EKONTO FIXED(4), 3 EAVD CHAR(3), T3 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), 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; 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)); OPEN FIL; WRITE FILE(FIL) FROM(BREC); RETURN; END; DO_EXIT:PROC; CLOSE FIL; CALL LOAD('S FIL SORTFIL KONTUTU',21); STOP; END; GET_FIL:PROC; IF SUBSTR(FILNAMN,4,8) = 'INFIL ' THEN PUT FILE(D) EDIT('VILKEN MÅNAD (te.x. JAN FEB)')(A(D_T-3)); OPEN_LOOP: IF SUBSTR(FILNAMN,4,8) ¬= 'INFIL ' 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 INFIL; CALL SEOF(INFIL); MAX_P_FIL=UNSPEC(INFIL); UNSPEC(INFIL)=0; SLUT=0; 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(INFIL) 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; /* 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 GO TO FILE_LOOP; CALL DO_KONT_TEST; IF OK THEN DO; T3=AVD; AVD=SUBSTR(AVD,-2,3); SUBSTR(AVD,-2,3)=T3; WRITE FILE(FIL) FROM(VER_STR); END; GO TO POST_LOOP; END;