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

⟦27bb7e8da⟧ Q1_Text, reclen=79

    Length: 19908 (0x4dc4)
    Types: Q1_Text, reclen=79
    Notes: q1file
    Names: »V41«

Derivation

└─⟦256585323⟧ Bits:30008759 50001598
    └─⟦this⟧ »V41« 

Text

/* V41 ÄR ETT PROGRAM FÖR UTSKRIFT AV KONTO,UKONTO & IK-SLAG.                  
   V 0:1                                                                       
   PRG JÅ 780907                                                               
   Ändring 800312 rättelse av pgmfel. Det gick inte att välja utskrift på      
   antingen 'ALLA' eller '5-siffriga'. Alla blev alltid utskrivna. OBg.        
   VERSION 1:4 Nivåerna markeras med asterisker i vänstra kanten. Utskriften   
   modifierad med hänsyn till kontots knytning till olika UKTO-tabeller  */    
                                                                               
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 T7                              CHAR (7)   INIT ('KONTO  '),               
    T6BL                            CHAR (6)   INIT ('      '),                
    T70 CHAR(70) INIT                                                          
('      TEXT                              SDATUM  UM  LISTM  UK  IKSLAG'),     
    T74 CHAR(74) INIT                                                          
('                                                     12345      0123456789'),
    TAB(5) CHAR(25) INIT('KONTOPLAN ',                                         
                          '   UKT-TABELL ',                                    
                          '   KIS-TABELL ',                                    
                          'ALLA KONTON ',                                      
                          'ENDAST 5-SIFFRIGA KONTON '),                        
    LISTM CHAR(5),                                                             
    UK CHAR(1),                                                                
    IKSLAG CHAR(10),                                                           
    TOM CHAR(10) INIT('          '),                                           
    NAMN(2) CHAR(10) INIT('KVV/KWAROS','AROS'),                                
    SDATUM CHAR(6),                                                            
    KONTO CHAR(5),                                                             
    ASTER                           CHAR (5)   INIT ('     '),                 
    L                               BINARY,                                    
    N                               BINARY,                                    
    FIL BINARY,                                                                
    SIDA BINARY INIT(0),                                                       
    R BINARY INIT(0),                                                          
    S CHAR(1),                                                                 
    DATUM CHAR(6),                                                             
    P POINTER,                                                                 
    D BASED(P) CHAR(6),                                                        
    PP POINTER,                                                                
    1 STRX BASED(PP),                                                          
      2 X CHAR(2),                                                             
      2 Y CHAR(2), /*  1 = KTOTAB, 2 = UKTOTAB, 3 = IKSLAGTAB  */              
      2 FIRMA CHAR(1),                                                         
        2  OP_KOD BINARY,                                                      
        2  RADANT BINARY,                                                      
      VERSION CHAR (47) INIT ('  V41 Version 1.4                      800701');
                                                                               
                                                                               
STRGEN:PROC;                                                                   
        IF FIL=1 THEN DO;                                                      
           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;                                                     
           J = K;                                                              
           RETURN;                                                             
        END;                                                                   
        ELSE DO;                                                               
           SDATUM=SDATUM3;                                                     
           J = K;                                                              
           RETURN;                                                             
        END;                                                                   
END;                                                                           
                                                                               
RUB:PROC;                                                                      
        SIDA=SIDA+1;                                                           
        PUT SKIP(R+4) EDIT(NAMN(FIRMA-7))(A(19))(TAB(FIL))(A)(TAB(S+3))(A)     
        (' ')(A(6))('19')(A)(DATUM)(A(2))('-')(A)(SUBSTR(DATUM,3,2))(A(2))     
        ('-')(A)(SUBSTR(DATUM,5,2))(A(5))('SID')(A(4))(SIDA)(A) SKIP(2);       
        PUT EDIT (T7) (A);                                                     
        IF FIL=1 THEN PUT EDIT(T70)(A)SKIP EDIT (T6BL) (A) EDIT (T74)(A) SKIP; 
        ELSE PUT EDIT(T70)(A(51))SKIP(2);                                      
        R= RADANT - 8;                                                         
        RETURN;                                                                
END;                                                                           
                                                                               
SKRIV:PROC;                                                                    
        IF S = '2' THEN GO TO SKR55;                                           
        DO N = 1 TO 5;                                                         
            IF SUBSTR(KONTO,N,1) = ' ' THEN GO TO SKR33;                       
            END;                                                               
        N = 6;                                                                 
SKR33:                                                                         
        N = N - 1;                                                             
        IF FIL ¬= 1 THEN GO TO SKR44;                                          
        IF N = 1 THEN ASTER = ' ****';                                         
        IF N = 2 THEN ASTER = '  ***';                                         
        IF N = 3 THEN ASTER = '   **';                                         
        IF N = 4 THEN ASTER = '    *';                                         
        IF N = 5 THEN ASTER = '     ';                                         
        IF M = 1 THEN GO TO SKR88;                                             
        GO TO SKR55;                                                           
SKR44:                                                                         
        IF N = 1 THEN ASTER = '   **';                                         
        IF N = 2 THEN ASTER = '    *';                                         
        IF N = 3 THEN ASTER = '  ';                                            
        IF M = 1 THEN GO TO SKR88;                                             
SKR55:                                                                         
        IF S = '2' THEN GO TO SKR66;                                           
        O = 3;                                                                 
        IF FIL = 1 THEN O = 5;                                                 
        IF SUBSTR (KONTO,O,1) = '0' THEN DO;                                   
            PUT SKIP EDIT (' ') (A);                                           
            R = R - 1;                                                         
            END;                                                               
SKR66:                                                                         
        PUT SKIP EDIT (KONTO) (A(6)) (ASTER) (A(7)) (TEXT) (A(34));            
        IF SDATUM=0 THEN PUT EDIT(TOM)(A(8))(UHMARK)(A(4));                    
        ELSE PUT EDIT(SDATUM)(A(8))(UHMARK)(A(4));                             
        IF FIL=1 THEN PUT EDIT(LISTM)(A(7))(UK)(A(4))(IKSLAG)(A);              
        R=R-1;                                                                 
SKR88:                                                                         
        M = 0;                                                                 
SKR99:                                                                         
        RETURN;                                                                
END;                                                                           
                                                                               
FRAEGA:PROC;                                                                   
        PUT FILE(D) SKIP EDIT('SKA ALLA KONTON SKRIVAS UT, ELLER')(A(47))      
        ('BARA DE')(A(8))(J)(A)('-SIFFRIGA')(A(38))                            
        ('DVS DE SOM ÄR AKTUELLA VID KONTERING') (A(47))                       
        ('1 = ALLA')(A(47))('2 = ENDAST')(A(11))(J)(A)('-SIFFRIGA')(A(35));    
        GET SKIP LIST(S);                                                      
        IF VERIFY(S,'12')=0 THEN GO TO UT;                                     
        PUT FILE(D) SKIP EDIT(VERSION)(A(105))('*** UTSKRIFT PÅGÅR ***')       
                                (A(36));                                       
        CALL CORED(0);                                                         
        RETURN;                                                                
END;                                                                           
                                                                               
KTORED: PROC;                                                                  
KTO11:                                                                         
        DO N = 1 TO 5;                                                         
            IF SUBSTR (KONTO,N,1) = ' ' THEN GO TO KTO15;                      
            END;                                                               
KTO15:                                                                         
/*      PUT SKIP LIST ('KTO15 ',N);              */                            
        N = N - 1;                                                             
        IF N = L THEN GO TO KTO22;                                             
/*      PUT SKIP LIST ('KTO= ',KONTO);                                         
        PUT SKIP LIST ('N= ',N);                                               
        PUT SKIP LIST ('L= ',L);               */                              
        GO TO KTO99;                                                           
KTO22:                                                                         
        M = 1;                                                                 
        CALL SKRIV;                                                            
        PUT SKIP (2) EDIT (KONTO) (A(6)) (ASTER) (A(6)) (TEXT) (A(34));        
        R = R - 2;                                                             
KTO99:                                                                         
        RETURN;                                                                
        END;                                                                   
                                                                               
                                                                               
/*   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 UT;                                       
        D='0';                                                                 
                                                                               
        J=5;                                                                   
        FIL=Y;            /*  VAL I UNDERMENYN  */                             
        IF FIL¬=1 THEN DO;                                                     
           SUBSTR(TAB(5),8,1)='3';  /* ÄNDRAR RUBRIKTEXT 5- TILL 3-SIFFR */    
           J=3;                                                                
        END;                                                                   
        IF FIL=2 THEN XN='  UKONTOP ';                                         
        IF FIL=3 THEN XN='  KSKONTOP';                                         
        FSTR=STR;                                                              
        OPEN FIL1;                                                             
        L = 0;                                                                 
        IF FIL = 1 THEN L = 1;                                                 
        M = 0;                                                                 
        CALL FRAEGA;                                                           
L0:     IF R < 7 THEN CALL RUB;                                                
L1:                                                                            
        N = 0;                                                                 
        IF FIL=1 THEN DO;                                                      
           ON ENDFILE GO TO UT;                                                
           READ FILE(FIL1) INTO(KONTOSTR);                                     
           KONTO=KONTO5;                                                       
        END;                                                                   
        ELSE DO;                                                               
           ON ENDFILE GO TO UT;                                                
           READ FILE(FIL1) INTO(UKSTR);                                        
           KONTO=KONTO3;                                                       
           SUBSTR (KONTO,4,2) = '  ';                                          
        END;                                                                   
        IF (SUBSTR(KONTO,J,1)=' ') & (S='2') THEN GO TO L1;                    
        K = J;                                                                 
        CALL STRGEN;                                                           
        IF S = '1' THEN DO;                                                    
            CALL KTORED;                                                       
            END;                                                               
        IF S = '1' & N ¬= L + 1 THEN GO TO L0;                                 
/*      PUT SKIP LIST ('S= ',S);                 */                            
        CALL SKRIV;                                                            
        GO TO L0;                                                              
UT:                                                                            
        L = L + 1;                                                             
        IF (FIL = 1) & (S = '1') & (L < 5) THEN DO;                            
            OPEN FIL1;                                                         
            GO TO L1;                                                          
            END;                                                               
        IF (FIL ¬= 1) & (S = '1') & (L < 3) THEN DO;                           
            OPEN FIL1;                                                         
            GO TO L1;                                                          
            END;                                                               
        D=DATUM;                                                               
        PUT SKIP(R);                                                           
        CALL PLOAD('Q       ');                                                
                                                                               
END;