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

⟦90269d0fa⟧ Q1_Text, reclen=79

    Length: 13825 (0x3601)
    Types: Q1_Text, reclen=79
    Notes: q1file
    Names: »KONTUT_U«

Derivation

└─⟦28699d361⟧ Bits:30008635 DDMQ1-0074_Bokrut_diskett_2_Kopia_JÅ_800504_PL1_LMC
    └─⟦this⟧ »KONTUT_U« 

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),                             
                                                                               
    D_T                    BINARY        INIT(37),                             
    VERSION                CHAR(37)                                            
    INIT('KONTUT Version 2.1             800609'),                             
                                                                               
    1 BREC,                                                                    
      2 FILLER             FIXED(11),                                          
      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),                                            
                                                                               
    1 VERID_STR,                                                               
      2 T66                CHAR(6),                                            
    T6                     CHAR(6),                                            
    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));                              
    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))                                         
        ('  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_KONTO_AVD_SUM:PROC;                                                      
        PUT SKIP EDIT('SUMMA')(X(48),A(9))(SDEB)(PC)(SKRE)(PC)(SDEB-SKRE)(PC)  
        SKIP;                                                                  
        RAD=RAD-2;                                                             
        SDEB=0;                                                                
        SKRE=0;                                                                
        T6=T66;                                                                
    RETURN;                                                                    
END;                                                                           
                                                                               
                                                                               
                                                                               
DO_EXIT:PROC;                                                                  
        CALL SKRIV_KONTO_AVD_SUM;                                              
        PUT SKIP(2) EDIT('TOTALT')(X(48),A(9))(TDEB)(PC)(TKRE)(PC)(TDEB-TKRE)  
        (PC) SKIP(RAD-2);                                                      
    STOP;                                                                      
END;                                                                           
                                                                               
                                                                               
                                                                               
OPEN_FIL:PROC;                                                                 
        OPEN FIL;                                                              
        CALL SEOF(FIL);                                                        
        MAX_P_FIL=UNSPEC(FIL);                                                 
        UNSPEC(FIL)=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(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);                                               
        VERID_STR=VER_ID;                                                      
    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 OPEN_FIL;                                                         
        CALL GET_POST;                                                         
        BREC=VER_STR;                                                          
        CALL RUB;                                                              
                                                                               
        CALL GET_POST;                                                         
        IF SLUT THEN CALL DO_EXIT;                                             
        CALL SKRIV_RAD;                                                        
        T6=T66;                                                                
                                                                               
POST_LOOP:                                                                     
        CALL GET_POST;                                                         
        IF SLUT THEN CALL DO_EXIT;                                             
        IF T66 ¬= T6 THEN CALL SKRIV_KONTO_AVD_SUM;                            
        CALL SKRIV_RAD;                                                        
        GO TO POST_LOOP;                                                       
END;