DataMuseum.dk

Presents historical artifacts from the history of:

Q1 computer

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

See our Wiki for more about Q1 computer

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦3aa6397ef⟧ Q1_Text, reclen=79

    Length: 15642 (0x3d1a)
    Types: Q1_Text, reclen=79
    Notes: q1file
    Names: »KONTUT_S«

Derivation

└─⟦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« 

Text

/* 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;