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

⟦dc055c372⟧ Q1_Text, reclen=79

    Length: 62015 (0xf23f)
    Types: Q1_Text, reclen=79
    Notes: q1file
    Names: »V101UKTO«

Derivation

└─⟦ce820ec03⟧ Bits:30008772 50001604
    └─⟦this⟧ »V101UKTO« 

Text

DCL VER                          FIXED (8) INIT (11850211);                    
/*      PROGRAM-ID.              V101UKTO.                                     
        DATE-WRITTEN.            850211.                                       
        AUTHOR.                  OLLE.                                         
        REMARKS.                 PROGRAMMET SKRIVER UT KONTERINGAR SOM         
                                 INNEHÅLLER ÖNSKAT UNDERKONTO. DOCK MÅSTE      
                                 KONTOT UNDER VILKET UNDERKONTOT ÄR BOKAT      
                                 VARA MARKERAT MED DEN UNDERKONTOPLAN SOM      
                                 ANGIVITS I BESTÄLLNINGEN.                     
   F.N. FÅR MAN SLÅ K8 OCH KOMMER TILL HUVUDMENYN OCH FÅR GÖRA OMBEST. */      
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
DCL KONTO1 CHAR(11),                                                           
    KONTO2 CHAR(11),                                                           
    RKONTO1 CHAR(13) INIT('-----.---.---'),                                    
    RKONTO2 CHAR(13) INIT('-----.---.---'),                                    
    DATUM1 CHAR(6)               INIT ('      '),                              
    DATUM2 CHAR(6)               INIT ('      '),                              
    DAT1BIN BINARY,                                                            
    DAT2BIN BINARY,                                                            
    SPTYP BINARY                 INIT (0), /*  1 = PERDAG 2 = BOKDAG */        
    STAB(11) BINARY,                                                           
    S_MARK CHAR(13) INIT('     .   .   ');                                     
                                                                               
DCL 1 TSTR,                                                                    
      2 VERNRT FIXED(5),                                                       
      2 DATUMT BINARY,                                                         
      2 TEXT CHAR(13),                                                         
      2 ANTVERP BINARY;                                                        
DCL PK POINTER,                                                                
    1 BSTR BASED(PK),                                                          
      2 KONTONR CHAR(11);                                                      
                                                                               
DCL PB POINTER,                                                                
    1 BELSTR BASED(PB),                                                        
      2 VERNR BINARY,                                                          
      2 PDATUM BINARY,                                                         
      2 BELOPP FIXED(11);                                                      
DCL 1 AREA,                                                                    
      2 CH(255) CHAR(61);                                                      
      /* 15 555 BYTES */                                                       
                                                                               
DCL 1   KONTOPOST,                                                             
        2   TABSPARRDAT            FIXED (6),                                  
        2   TABUPPHMARK            CHAR (1),                                   
        2   TABLISTMARK            BINARY,                                     
        2   TABIKKORSN             BINARY,                                     
        2   TABTEXT                CHAR (32);                                  
                                                                               
DCL VERTEXT FILE,                                                              
    VERBELOP FILE,                                                             
    KONTOP FILE,                                                               
    BSTRL BINARY INIT(61),                                                     
    MAX BINARY,                                                                
    BLOCKANT BINARY,                                                           
    JK BINARY,                                                                 
    JJ BINARY,                                                                 
    LISTTYP BINARY,            /* 1 = KONTOUTDRAG,   2 = SALDOBESKED */        
    RCODE BINARY,                                                              
    KONTOG CHAR(11),                                                           
    SIDA BINARY INIT(1),                                                       
    STARTSID                     BINARY INIT (0),                              
    STARTSIDCH                   CHAR (5),                                     
    PUNDERTR                     BINARY INIT (0),                              
    R BINARY INIT(0),                                                          
    NAMN (3) CHAR(11) INIT('MELLANKRAFT','KVV/KWAROS','AROS'),                 
    RTEXT(8) CHAR(22) INIT(                                                    
    'KONTOUTDRAG per U-KTO',                                                   
    'SALDOBESKED',                                                             
    'PERDAG',                                                                  
    'BOKDAG',                                                                  
    'BOKDAG  PERDAG    VER.',                                                  
    '',                                                                        
    'TEXT',                                                                    
    ''),                                                                       
    RKONTO CHAR(13),                                                           
    KONTONRG CHAR(11),                                                         
    KONTO5FOREG                    CHAR (5),                                   
    TEXTKTO                        CHAR (5),                                   
    WKONTO1                        CHAR (11),                                  
    KTOTEXT                        CHAR (32),                                  
    T15BELRED                      CHAR (15),                                  
    STARTSW                        BINARY INIT (1),                            
    KONSTANT BINARY,                                                           
    BUFF CHAR(20),                                                             
    T1 CHAR(1),                                                                
    T61 CHAR(6),                                                               
    T61KOP                       CHAR (6),                                     
    T61KOP2                      CHAR (6),                                     
    T62 CHAR(6),                                                               
    T62KOP                       CHAR (6),                                     
    T62KOP2                      CHAR (6),                                     
    T11 CHAR(11),                                                              
    T13 CHAR(13),                                                              
    T13KOP                       CHAR (13),                                    
    T13KOP2                      CHAR (13),                                    
    T14 CHAR(14),                                                              
    T15                            CHAR (15),                                  
    KT1 CHAR(1),                                                               
    KT2 CHAR(2),                                                               
    KT3 CHAR(3),                                                               
    KT4 CHAR(4),                                                               
    KT5 CHAR(5),                                                               
    KT6 CHAR(6),                                                               
    KT7 CHAR(7),                                                               
    KT8 CHAR(8),                                                               
    KT9 CHAR(9),                                                               
    KT10 CHAR(10),                                                             
    KT11 CHAR(11),                                                             
    SVAR                           CHAR (1),                                   
    STARTKTOFEL                    BINARY INIT (0),                            
    KEYT                           BINARY INIT (0),                            
    FX6                FIXED(6),                                               
    TYP1               BINARY  INIT(0),                                        
    TYP2               BINARY INIT(0), /* 1=UKTO I SÖKBEGR. 2=IK I SÖKBEGR.*/  
    OFFSET             BINARY INIT(1),                                         
    LENGD              BINARY INIT(0),                                         
    SUMMA(11)          FIXED(11) INIT((11)0),                                  
    P                  POINTER,                                                
    D                  CHAR(6) BASED(P),                                       
    DATUM              CHAR(6),                                                
    PP                 POINTER,                                                
    1 STR              BASED(PP),                                              
      2 X              CHAR(2),                                                
      2 Y              CHAR(2),      /* 5= KONTO, 6 = UKTO,  7 = IKSLAG   */   
      2 FIRMA          CHAR (1),                                               
      2   OP_KOD                   BINARY,                                     
      2   RADANT                   BINARY,                                     
    T4                 CHAR(4),                                                
    ANTAL_KONT         BINARY INIT(0),                                         
    TOT_ANTAL_KONT     BINARY INIT(0),                                         
    VERSION CHAR(47) INIT('  V10B Version 1.1                       810424');  
                                                                               
                                                                               
                                                                               
KONTORED:PROC;                                                                 
DCL KFLAGG BINARY INIT(0);                                                     
                                                                               
                                                                               
        KONTO2='-----------';                                                  
        RKONTO='-----.---.---';                                                
        T1=SUBSTR(BUFF,1,1);                                                   
        IF T1 ¬= '7' & T1¬='8' & T1¬='9' & Y='5 ' THEN DO;                     
           T1=SUBSTR(BUFF,7,1);                                                
           I=6;                                                                
           J=7;                                                                
           TYP2=1;                 /* DET FINNS U-KTO ANGIVET        */        
           IF INDEX('0123456789',T1)¬=0 THEN GO TO K1;                         
           T1=SUBSTR(BUFF,11,1);                                               
           I=9;                                                                
           J=11;                                                               
           TYP2=2;                 /* DET FINNS IK-SLAG ANGIVET      */        
           IF INDEX('0123456789',T1)=0 THEN GO TO KUT;                         
                                                                               
                                                                               
K1:        DO K=1 TO 3;                                                        
              SUBSTR(KONTO2,I,1)=T1;                                           
              SUBSTR(RKONTO,J,1)=T1;                                           
              T1=SUBSTR(BUFF,J+1,1);                                           
              IF INDEX('0123456789',T1)=0 THEN GO TO KUT;                      
              J=J+1;                                                           
              I=I+1;                                                           
           END;                                                                
           GO TO KUT;                                                          
        END;                                                                   
        J=0;                                                                   
        TYP2=0;                                                                
        DO I=1 TO 11;                                                          
           IF I=6 ö I=9 THEN J=J+2;     /* ADDERING FÖRBI PUNKTERNA  */        
           ELSE J=J+1;                                                         
           T1=SUBSTR(BUFF,J,1);                                                
           IF INDEX('0123456789',T1)=0 & LENGD>0 THEN GO TO KUT;               
           IF INDEX('0123456789',T1)¬=0 THEN DO;                               
              SUBSTR(KONTO2,I,1)=T1;                                           
              SUBSTR(RKONTO,J,1)=T1;                                           
              LENGD=LENGD+1;                                                   
           END;                                                                
           ELSE DO;                                                            
              OFFSET=OFFSET+1;                                                 
              SUBSTR(KONTO2,I,1)='-';                                          
              SUBSTR(RKONTO,J,1)='-';                                          
           END;                                                                
        END;                                                                   
                                                                               
KUT:    IF KFLAGG=0 THEN DO;                                                   
           KONTO1=KONTO2;                                                      
           KFLAGG=1;                                                           
           TYP1=TYP2;                                                          
        END;                                                                   
                                                                               
        RETURN;                                                                
END;                                                                           
                                                                               
SRED:PROC;                                                                     
        J=14;                                                                  
                                                                               
        DO I=11 TO 1 BY -1;                                                    
           IF (I=5) ö (I=8) THEN J=J-2;                                        
           ELSE J=J-1;                                                         
           IF SUBSTR(BUFF,J,1)='S' THEN DO;                                    
              STAB(I)=1;                                                       
              SUBSTR(S_MARK,J,1)='S';                                          
           END;                                                                
           ELSE DO;                                                            
              STAB(I)=0;                                                       
           END;                                                                
        END;                                                                   
        RETURN;                                                                
END;                                                                           
                                                                               
RUB:PROC;                                                                      
        IF STARTSID > SIDA THEN DO;                                            
            SIDA = SIDA + 1;                                                   
            GO TO R99;                                                         
            END;                                                               
                                                                               
        IF STARTSID = SIDA THEN R = 0;                                         
        I_R=LISTTYP;                                                           
        PUT SKIP(R+3) EDIT(NAMN(FIRMA-6))(A(30))(RTEXT(I_R))(A(45))('19') (A)  
        (SUBSTR(DATUM,1,2))(A)('-')(A)(SUBSTR(DATUM,3,2))(A)('-')(A)           
        (SUBSTR(DATUM,5,2))(A(5))('SID')(A(4))(SIDA)(A) SKIP EDIT              
        ('Fr.o.m konto')(A(13))(RKONTO1)(A)(', till konto')(A(13))(RKONTO2)    
        (A) SKIP EDIT(' ')(A(13))(S_MARK)(A) SKIP EDIT('Fr.o.m datum')(A(13))  
        (DATUM1)(A(7))('till datum')(A(11))(DATUM2)(A(7))('m.a.p')(A(6))       
        (RTEXT(SPTYP+2))(A) SKIP EDIT(' ')(A(12))('KONTO')(A(18))(RTEXT(I_R+4))
        (A)(' ')(A(6))('BELOPP')(A(13))(RTEXT(I_R+6))(A) SKIP;                 
        SIDA=SIDA+1;                                                           
R99:                                                                           
        R = RADANT - 8;                                                        
        RETURN;                                                                
END;                                                                           
                                                                               
STYRDATA:PROC;                                                                 
        PUT FILE(D) SKIP EDIT ('Kontoutdrag U-KTO       ') (A(47));            
        J = 59;                                                                
        CALL MOVEBUFF (J);                                                     
        PUT FILE (D) EDIT ('För U-KTO    ') (A);                               
        J = 106;                                                               
        CALL MOVEBUFF (J);                                                     
        PUT FILE (D) EDIT ('          ') (A);                                  
        J = 153;                                                               
        CALL MOVEBUFF (J);                                                     
        PUT FILE (D) EDIT ('SUMMERING') (A);                                   
        J = 200;                                                               
        CALL MOVEBUFF (J);                                                     
        PUT FILE (D) EDIT ('PERDAG = 1, BOKDAG = 2') (A);                      
        J = 247;                                                               
        CALL MOVEBUFF (J);                                                     
        PUT FILE (D) EDIT ('Fr.o.m. DATUM') (A);                               
        J = 294;                                                               
        CALL MOVEBUFF (J);                                                     
        PUT FILE (D) EDIT ('Till DATUM') (A);                                  
        J = 341;                                                               
        CALL MOVEBUFF (J);                                                     
        PUT FILE (D) EDIT ('V.g. angiv första sidnr.') (A);                    
                                                                               
        J = 81;                                                                
        CALL MOVEBUFF(J);                                                      
        CALL TYPIST(RKONTO1,13);                                               
        CALL TYPIST('┣10┫',1);                                                    
        GET SKIP LIST (BUFF);                                                  
        CALL KEYFUN (KEYT);                                                    
        IF KEYT = 140 THEN GO TO SLUT;                                         
        CALL KONTORED;                                                         
        RKONTO1=RKONTO;                                                        
        PUT FILE(D) EDIT(RKONTO1)(A);                                          
        J = 128;                                                               
        CALL MOVEBUFF(J);                                                      
        IF OFFSET>1 THEN GO TO S15;                                            
        CALL TYPIST(RKONTO2,13);                                               
        CALL TYPIST('┣10┫',1);                                                    
S1:     GET SKIP LIST(BUFF);                                                   
        CALL KONTORED;                                                         
S15:    RKONTO2=RKONTO;                                                        
        IF (KONTO1>KONTO2) ö (TYP1¬=TYP2) THEN GO TO S1; /*KLAR I KONTORED*/   
        PUT FILE(D) EDIT(RKONTO2)(A);                                          
        CALL KEYFUN (KEYT);                                                    
        IF KEYT = 140 THEN GO TO S99;                                          
        J = 175;                                                               
        CALL MOVEBUFF(J);                                                      
        IF OFFSET>1 & TYP2 = 2 THEN GO TO S17;                                 
        CALL TYPIST(S_MARK,13);                                                
        CALL TYPIST('┣10┫',1);                                                    
        GET SKIP LIST(BUFF);                                                   
        CALL SRED;                                                             
S17:    PUT FILE(D) EDIT(S_MARK)(A(15));                                       
        CALL KEYFUN (KEYT);                                                    
        IF KEYT = 140 THEN GO TO S99;                                          
        J = 234;                                                               
        CALL MOVEBUFF (J);                                                     
S4:     GET SKIP LIST (SPTYP);                                                 
        IF SPTYP<1 ö SPTYP>2 THEN GO TO S4;                                    
        PUT FILE (D) EDIT (SPTYP) (A);                                         
        J = 276;                                                               
        CALL MOVEBUFF(J);                                                      
S3:     GET SKIP LIST(D);                                                      
        CALL DATCHECK(DATUM1);                                                 
        IF DATUM1='0     ' THEN GO TO S3;                                      
        PUT FILE(D) EDIT(DATUM1)(A);                                           
        J = 323;                                                               
        CALL MOVEBUFF(J);                                                      
S2:     GET SKIP LIST(D);                                                      
        CALL DATCHECK(DATUM2);                                                 
        IF DATUM1>=DATUM2  THEN GO TO S2;                                      
        D='0';                                                                 
        PUT FILE(D) EDIT(DATUM2)(A);                                           
        IF TYP1=1 THEN Y='7 ';                                                 
        IF TYP1=2 THEN Y='8 ';                                                 
        IF Y='4 ' THEN LISTTYP=1;                                              
        ELSE LISTTYP=2;                                                        
        Y = '4 ';                                                              
        LISTTYP = 1;                                                           
        DAT1BIN=372*(SUBSTR(DATUM1,1,2)-78)+31*(SUBSTR(DATUM1,3,2)-1)+         
           SUBSTR(DATUM1,5,2)-1;                                               
        DAT2BIN=372*(SUBSTR(DATUM2,1,2)-78)+31*(SUBSTR(DATUM2,3,2)-1)+         
           SUBSTR(DATUM2,5,2)-1;                                               
        J = 373;                                                               
        CALL MOVEBUFF (J);                                                     
        GET SKIP LIST (STARTSID);                                              
        PUT FILE (D) EDIT (STARTSID) (A);                                      
S99:                                                                           
        RETURN;                                                                
END;                                                                           
                                                                               
STARTPOST:PROC;                                                                
        RCODE=0;                                                               
        PK=ADDR(AREA);                                                         
        OPEN VERBELOP;                                                         
        CALL SEOF(VERBELOP);                                                   
        MAX=UNSPEC(VERBELOP);                                                  
        UNSPEC(VERBELOP)=0;                                                    
        IF OFFSET>1 THEN DO;                                                   
           READ FILE(VERBELOP) INTO(BSTR);                                     
           GO TO ST30;                                                         
            END;                                                               
ST10:                                                                          
        J=INDEX(KONTO1,'-')-1;   /* FASTSTÄLLER LÄNGD PÅ ANGIVET KONTOBEGREPP*/
        IF J=1 THEN DO;                                                        
           KT1=KONTO1;                                                         
           ON ERROR GO TO ST1;                                                 
           READ KEY(KT1) FILE(VERBELOP) INTO(AREA);                            
        END;                                                                   
        IF J=2 THEN DO;                                                        
           KT2=KONTO1;                                                         
           ON ERROR GO TO ST1;                                                 
           READ KEY(KT2) FILE(VERBELOP) INTO(AREA);                            
        END;                                                                   
        IF J=3 THEN DO;                                                        
           KT3=KONTO1;                                                         
           ON ERROR GO TO ST1;                                                 
           READ KEY(KT3) FILE(VERBELOP) INTO(AREA);                            
        END;                                                                   
        IF J=4 THEN DO;                                                        
           KT4=KONTO1;                                                         
           ON ERROR GO TO ST1;                                                 
           READ KEY(KT4) FILE(VERBELOP) INTO(AREA);                            
        END;                                                                   
        IF J=5 THEN DO;                                                        
           KT5=KONTO1;                                                         
           ON ERROR GO TO ST1;                                                 
           READ KEY(KT5) FILE(VERBELOP) INTO(AREA);                            
        END;                                                                   
        IF J=6 THEN DO;                                                        
           KT6= KONTO1;                                                        
           ON ERROR GO TO ST1;                                                 
           READ KEY(KT6) FILE(VERBELOP) INTO(AREA);                            
        END;                                                                   
        IF J=7 THEN DO;                                                        
           KT7=KONTO1;                                                         
           ON ERROR GO TO ST1;                                                 
           READ KEY(KT7) FILE(VERBELOP) INTO(AREA);                            
        END;                                                                   
        IF J=8 THEN DO;                                                        
           KT8=KONTO1;                                                         
           ON ERROR GO TO ST1;                                                 
           READ KEY(KT8) FILE(VERBELOP) INTO(AREA);                            
        END;                                                                   
        IF J=9 THEN DO;                                                        
           KT9=KONTO1;                                                         
           ON ERROR GO TO ST1;                                                 
           READ KEY(KT9) FILE(VERBELOP) INTO(AREA);                            
        END;                                                                   
        IF J=10 THEN DO;                                                       
           KT10=KONTO1;                                                        
           ON ERROR GO TO ST1;                                                 
           READ KEY(KT10) FILE(VERBELOP) INTO(AREA);                           
        END;                                                                   
        IF J=-1 THEN DO;                                                       
           KT11=KONTO1;                                                        
           ON ERROR GO TO ST1;                                                 
           READ KEY(KT11) FILE(VERBELOP) INTO(AREA);                           
        END;                                                                   
        GO TO ST2;                                                             
ST1:    IF ONCODE¬=4 THEN DO;                                                  
           PUT SKIP LIST('LÄSFEL I VERBELOP I POST: PROC ',RCODE);             
           D=DATUM;                                                            
           CALL PLOAD('Q       ');                                             
        END;                                                                   
        WKONTO1 = KONTO1;                                                      
        IF J = -1 ö J > 5 THEN DO;                                             
            STARTKTOFEL = 1;                                                   
            IF J = -1 THEN J = 11;                                             
            SUBSTR (KONTO1,J,1) = '-';                                         
            GO TO ST2;                                                         
            END;                                                               
        STARTKTOFEL = 2;                                                       
        J = 376;                                                               
        CALL MOVEBUFF (J);                                                     
        PUT FILE (D) EDIT ('Kontot saknar kontering') (A);                     
        J = 517;                                                               
        CALL MOVEBUFF (J);                                                     
        PUT FILE (D) EDIT ('MENYN = F7   NYTT KTO = F2') (A);                  
        DO I = 1 TO 300;                                                       
            CALL OUTPUT (1,6);                                                 
            END;                                                               
ST15:                                                                          
        GET SKIP LIST (SVAR);                                                  
        CALL KEYFUN (KEYT);                                                    
        IF KEYT = 23 THEN GO TO SLUT;                                          
        IF KEYT = 18 THEN DO;                                                  
            RKONTO1 = '-----.---.---';                                         
            RKONTO2 = RKONTO1;                                                 
            STARTKTOFEL = 0;                                                   
            OFFSET = 1;                                                        
            KFLAGG = 0;                                                        
            IF R ¬= 0 THEN PUT SKIP (R);                                       
            R = 0;                                                             
            GO TO L0;                                                          
            END;                                                               
        GO TO ST15;                                                            
        RCODE=1;                                                               
        RETURN;                                                                
ST2:                                                                           
        IF STARTKTOFEL = 1 THEN DO;                                            
            J = 376;                                                           
            CALL MOVEBUFF (J);                                                 
            PUT FILE (D) EDIT                                                  
                ('Angivet kontobegrepp saknar kontering. Följande') (A)        
                ('begrepp finns:') (A(34))                                     
                (SUBSTR (KONTO1,1,5)) (A) ('.') (A)                            
                (SUBSTR (KONTO1,6,3)) (A) ('.') (A)                            
                (SUBSTR (KONTO1,9,3)) (A);                                     
            J = 517;                                                           
            CALL MOVEBUFF (J);                                                 
            PUT FILE (D) EDIT                                                  
                ('MENYN = F7  NYTT KTO = F2  TUTAochKÖR = RETURN') (A);        
            DO I = 1 TO 300;                                                   
                CALL OUTPUT (1,6);                                             
                END;                                                           
ST20:                                                                          
            GET SKIP LIST (SVAR);                                              
            CALL KEYFUN (KEYT);                                                
            IF KEYT = 23 THEN GO TO SLUT;                                      
            IF KEYT = 18 THEN DO;                                              
                RKONTO1 = '-----.---.---';                                     
                RKONTO2 = RKONTO1;                                             
                STARTKTOFEL = 0;                                               
                OFFSET = 1;                                                    
                KFLAGG = 0;                                                    
                IF R ¬= 0 THEN PUT SKIP (R);                                   
                R = 0;                                                         
                GO TO L0;                                                      
                END;                                                           
            IF KEYT = 13 THEN GO TO ST30;                                      
            GO TO ST20;                                                        
            END;                                                               
ST30:                                                                          
        TEXTKTO = SUBSTR (KONTONR,1,5);                                        
        KONTONRG=KONTONR;                                                      
        UNSPEC(VERBELOP)=UNSPEC(VERBELOP)-1;                                   
        BLOCKANT=MAX-UNSPEC(VERBELOP);                                         
        JJ=5;                                                                  
        JK=0;                                                                  
        IF (LISTTYP=1) ö (SPTYP=2) THEN DO;                                    
           OPEN VERTEXT;                                                       
           READ FILE(VERTEXT) INTO(TSTR);                                      
           KONSTANT=VERNRT;                                                    
_UNREAD__UNREAD__UNREAD__UNREAD__UNREAD__UNREAD__UNREAD__UNREAD__UNREAD__UNREAD
        RETURN;                                                                
END;                                                                           
                                                                               
POST:PROC;                                                                     
P1:     JJ=JJ+1;                                                               
        IF JJ>5 THEN DO;                                                       
           IF JK<1 THEN DO;                                                    
              IF BLOCKANT>0 THEN DO;                                           
                 JK=255;                                                       
                 IF JK>BLOCKANT THEN JK=BLOCKANT;                              
                 BLOCKANT=BLOCKANT-JK;                                         
                 CALL RD(VERBELOP,AREA,JK,RCODE);                              
                 IF RCODE¬=0 THEN PUT SKIP LIST('LÄSFEL I VERBELOP',RCODE);    
                 PK=ADDR(AREA);                                                
              END;                                                             
              ELSE DO;                                                         
                 KONTONR='SLUT9999999';                                        
                 PDATUM=DAT1BIN;                                               
                 DATUMT=DAT1BIN;                                               
                 RETURN;                                                       
              END;                                                             
           END;                                                                
           ELSE DO;                                                            
              UNSPEC(PK)=UNSPEC(PK)+BSTRL;                                     
           END;                                                                
           JK=JK-1;                                                            
           JJ=1;                                                               
        END;                                                                   
        UNSPEC(PB)=UNSPEC(PK)+JJ*10+1;                                         
        IF PDATUM=0 THEN GO TO P1;                                             
        RETURN;                                                                
END;                                                                           
                                                                               
DATTEST:PROC;                                                                  
        RCODE=0;                                                               
        IF (SPTYP=2) & (PDATUM<0) THEN DO;                                     
           IF VERNR¬=VERNRT THEN DO;                                           
              UNSPEC(VERTEXT)=VERNR-KONSTANT;                                  
              ON ERROR GO TO D1;                                               
              ON ENDFILE GO TO D1;                                             
              READ FILE(VERTEXT) INTO(TSTR);                                   
           END;                                                                
           IF (DAT1BIN>DATUMT) ö (DAT2BIN<=DATUMT) THEN RCODE=1;               
        END;                                                                   
        ELSE DO;                                                               
           IF PDATUM<0 THEN PDATUM=-PDATUM;                                    
           IF (DAT1BIN>PDATUM) ö (DAT2BIN<=PDATUM) THEN RCODE=1;               
        END;                                                                   
        RETURN;                                                                
                                                                               
D1:     PUT SKIP LIST('LÄSFEL I VERTEXT UNDER LABEL D1 ',ONCODE);              
        R=R-1;                                                                 
        RCODE=1;                                                               
        RETURN;                                                                
END;                                                                           
                                                                               
                                                                               
KONTOTEST:PROC;                                                                
        RCODE=0;                                                               
       IF SUBSTR(KONTONR,OFFSET,LENGD)=SUBSTR(KONTO2,OFFSET,LENGD) THEN DO;    
            IF STARTSW = 1 THEN DO;                                            
                KONTONRG = KONTONR;                                            
                STARTSW = 0;                                                   
                RETURN;                                                        
                END;                                                           
            RETURN;                                                            
            END;                                                               
                                                                               
        IF KONTONR¬='SLUT9999999' THEN RCODE=1;                                
    RETURN;                                                                    
END;                                                                           
                                                                               
                                                                               
KONTOTEXT:PROC;                                                                
                                                                               
        TEXTKTO = SUBSTR (KONTONRG,1,5);                                       
        IF SUBSTR (KONTONRG,1,5) = KONTO5FOREG THEN GO TO K88;                 
        IF TEXTKTO              = 'SLUT9' THEN GO TO K88;                      
K77:                                                                           
        IF KONTO5FOREG = SUBSTR (KONTONRG,1,5) THEN GO TO K88;                 
        IF ONCODE = 4 THEN GO TO K88;                                          
        READ KEY (TEXTKTO) FILE (KONTOP) INTO (KONTOPOST);                     
        KTOTEXT = TABTEXT;                                                     
        GO TO K99;                                                             
K88:                                                                           
        KTOTEXT = ('     ');                                                   
K99:                                                                           
        RETURN;                                                                
END;                                                                           
                                                                               
                                                                               
                                                                               
SKRIV_SUMMA:PROC;                                                              
        T13='             ';                                                   
        T11=T13;                                                               
        DO I=2 TO 11;                                                          
           SUMMA(I)=SUMMA(I)+SUMMA(1);                                         
        END;                                                                   
        T4=ANTAL_KONT;                                                         
        TOT_ANTAL_KONT=TOT_ANTAL_KONT+ANTAL_KONT;                              
                                                                               
                                                                               
                                                                               
        DO I=1 TO 11;                                                          
           IF SUBSTR(KONTONRG,I,1)¬=SUBSTR(KONTONR,I,1) THEN GO TO SKR1;       
            END;                                                               
SKR1:   DO N=11 TO 1 BY-1;                                                     
           IF SUBSTR(KONTONRG,N,1)¬='0' THEN GO TO SKR2;                       
            END;                                                               
SKR2:   IF R<8 THEN CALL RUB;                                                  
        K=11;                                                                  
SKR3:   DO J=1 TO 12-I;                                                        
           IF STAB(12-J)=1 THEN DO;                                            
              IF R<2 THEN CALL RUB;                                            
              SUBSTR(T11,K,1)='*';                                             
              K=K-1;                                                           
              CALL BELRED(SUMMA(J),T14);                                       
              M=0;                                                             
              T13='             ';                                             
              DO L=1 TO 12-J;                                                  
                 M=M+1;                                                        
                 IF (L=6) ö (L=9) THEN DO;                                     
                    SUBSTR(T13,M,1)='.';                                       
                    M=M+1;                                                     
                 END;                                                          
                 SUBSTR(T13,M,1)=SUBSTR(KONTONRG,L,1);                         
              END;                                                             
              IF LISTTYP=1 THEN M=28;                                          
              ELSE M=2;                                                        
              T15BELRED = '               ';                                   
              IF SUBSTR (T14,1,5) = '     ' THEN GO TO SKR4;                   
              IF SUBSTR (T14,1,5) = '    -' THEN DO;                           
                  SUBSTR (T15BELRED,5,1) = '-';                                
                  GO TO SKR43;                                                 
                  END;                                                         
              SUBSTR (T15BELRED,1,4) = SUBSTR (T14,2,4);                       
              SUBSTR (T15BELRED,5,1) = '.';                                    
              GO TO SKR43;                                                     
SKR4:                                                                          
              IF SUBSTR (T14,6,3) = '   ' ö SUBSTR (T14,6,3) = '  -'           
                  THEN GO TO SKR45;                                            
SKR43:                                                                         
              SUBSTR (T15BELRED,6,3) = SUBSTR (T14,6,3);                       
              SUBSTR (T15BELRED,9,1) = '.';                                    
              SUBSTR (T15BELRED,10,6) = SUBSTR (T14,9,6);                      
              T15 = T15BELRED;                                                 
              GO TO SKR47;                                                     
SKR45:                                                                         
              SUBSTR (T15BELRED,2,14) = T14;                                   
              T15 = T15BELRED;                                                 
SKR47:                                                                         
              IF STARTSID > SIDA - 1 THEN GO TO SKR5;                          
              PUT SKIP EDIT(T11)(A(12))(T13)(A)(' ')(A(M-1))(T15)(A(33))       
                  (T4) (A(4));                                                 
              IF SUBSTR (T13,5,1) = ' ' THEN GO TO SKR5;                       
              IF SUBSTR (KONTONRG,1,5) > '70001' THEN DO;                      
              CALL KONTOTEXT;                                                  
              PUT EDIT ('   ') (A) (KTOTEXT) (A);                              
              KONTO5FOREG = SUBSTR (KONTONRG,1,5);                             
              END;                                                             
SKR5:                                                                          
              T4='    ';                                                       
              R=R-1;                                                           
           END;                                                                
           SUMMA(J)=0;                                                         
        END;                                                                   
        KONTONRG=KONTONR;                                                      
        SUMMA(1)=0;                                                            
        IF STARTSID > SIDA - 1 THEN GO TO SKR90;                               
        IF K¬=11 THEN DO;                                                      
           PUT SKIP;                                                           
           END;                                                                
SKR90:                                                                         
        IF K ¬= 11 THEN DO;                                                    
           R = R - 1;                                                          
           ANTAL_KONT = 0;                                                     
           END;                                                                
SKR99:                                                                         
        RETURN;                                                                
END;                                                                           
                                                                               
                                                                               
                                                                               
                    /*    UTSKRIFT AV LISTRAD FÖR KONTOUTDRAG        */        
                                                                               
POSTSKRIV:PROC;                                                                
        IF R < 8 THEN DO;                                                      
           PUNDERTR = 1;                                                       
           CALL RUB;                                                           
            END;                                                               
        IF VERNR¬=VERNRT THEN DO;                                              
           UNSPEC(VERTEXT)=VERNR-KONSTANT;                                     
           ON ERROR GO TO P3;                                                  
           ON ENDFILE GO TO D1;                                                
           READ FILE(VERTEXT) INTO(TSTR);                                      
              GO TO P2;                                                        
P3:        TEXT='**** FINNS EJ';                                               
           DATUMT=PDATUM;                                                      
P2:     END;                                                                   
        I=0;                                                                   
        DO J=1 TO 11;                                                          
           IF (J=6) ö (J=9) THEN DO;                                           
              I=I+1;                                                           
              SUBSTR(T13,I,1)='.';                                             
           END;                                                                
           I=I+1;                                                              
           SUBSTR(T13,I,1)=SUBSTR(KONTONR,J,1);                                
        END;                                                                   
        IF PDATUM<0 THEN PDATUM=-PDATUM;                                       
        IIII=DATUMT;                                                           
        CALL BINTOCH(IIII,T61);                                                
        CALL BINTOCH(PDATUM,T62);                                              
        CALL BELRED(BELOPP,T14);                                               
        IF T61=T62 THEN T62='      ';                                          
        IF PUNDERTR = 1 THEN DO;                                               
           PUNDERTR = 0;                                                       
           GO TO P100;                                                         
           END;                                                                
        T13KOP2 = T13;                                                         
        T61KOP2 = T61;                                                         
        IF T13 ¬= T13KOP THEN GO TO P100;                                      
        T13 = ('             ');                                               
        IF T61 ¬= T61KOP THEN GO TO P100;                                      
        T61 = ('      ');                                                      
P100:                                                                          
        IF STARTSID > SIDA - 1 THEN GO TO P200;                                
        PUT SKIP EDIT(' ')(A(12))(T13)(A(18))(T61)(A(8))(T62)(A(8))            
        (VERNR)(P'-----9',X(1))(T14)(A(18))(TEXT)(A);                          
        T13KOP = T13KOP2;                                                      
        T61KOP = T61KOP2;                                                      
P200:                                                                          
        R=R-1;                                                                 
        SUBSTR (KONTONRG,1,5) = SUBSTR (KONTONR,1,5);                          
        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:                                                                         
        CALL DATCHECK(DATUM);                                                  
        IF DATUM='0     ' THEN CALL PLOAD('Q       ');                         
        UNSPEC(P)=16570;                                                       
        D='0';                                                                 
        UNSPEC(PP)=16616;                                                      
        OPEN KONTOP;                                                           
L0:     CALL STYRDATA;                                                         
        IF Y='7 ' ö Y='8 ' THEN DO;        /*  U-KONTO  ELLER IK-SLAG*/        
           D=DATUM;                                                            
           CALL PLOAD('V12     ');                                             
        END;                                                                   
        CALL STARTPOST;                                                        
        IF RCODE = 1 & STARTKTOFEL = 2 THEN GO TO L0;                          
L1:     CALL POST;                  /* INLÄSN. AV 255 REC. FRÅN VERBELOP */    
        CALL DATTEST;                                                          
        IF RCODE¬=0 THEN GO TO L1;  /* LÄST KONTO ¬= SÖKT */                   
        IF OFFSET>1 THEN DO;                                                   
           CALL KONTOTEST;                                                     
            IF RCODE ¬= 0 THEN GO TO L1;                                       
            IF (SUBSTR (KONTONR,1,5) ¬= SUBSTR (KONTONRG,1,5)) ö               
                (SUBSTR (KONTONR,9,3) ¬= SUBSTR (KONTONRG,9,3)) THEN DO;       
                CALL SKRIV_SUMMA;                                              
                END;                                                           
_UNREAD__UNREAD__UNREAD__UNREAD__UNREAD__UNREAD__UNREAD__UNREAD__UNREAD__UNREAD
              IF R<3 THEN CALL RUB;                                            
              CALL BELRED(SUMMA(1),T14);                                       
              T4=ANTAL_KONT;                                                   
              TOT_ANTAL_KONT=ANTAL_KONT;                                       
              PUT SKIP EDIT(RKONTO1)(X(12),A(41))(T14)(A(33))(T4)(A);          
              R=R-1;                                                           
           END;                                                                
        END;                                                                   
        ELSE DO;                                                               
           IF KONTONR>=KONTO2 THEN KONTONR='SLUT9999999';                      
           IF KONTONR¬=KONTONRG THEN CALL SKRIV_SUMMA;                         
        END;                                                                   
        IF KONTONR='SLUT9999999' THEN GO TO UT;                                
        IF LISTTYP=1 THEN CALL POSTSKRIV;      /*       KONTOUTDRAG  */        
        SUMMA(1)=SUMMA(1)+BELOPP;                                              
        ANTAL_KONT=ANTAL_KONT+1;                                               
        GO TO L1;                                                              
UT:                                                                            
        DO I = 1 TO 2000;                                                      
        END;                                                                   
        IF TOT_ANTAL_KONT=0 THEN DO;                                           
           CALL OUTPUT(1,6);                                                   
           PUT SKIP(2) EDIT('****  INGEN KONTERING INOM BEGÄRT OMRÅDE')(A);    
           R=R-2;                                                              
        END;                                                                   
        IF R ¬= 0 THEN PUT SKIP (R) EDIT (' ') (A);                            
        RKONTO1 = '-----.---.---';                                             
        RKONTO2 = RKONTO1;                                                     
        STARTKTOFEL = 0;                                                       
        OFFSET = 1;                                                            
        KFLAGG = 0;                                                            
_UNREAD__UNREAD__UNREAD__UNREAD__UNREAD__UNREAD__UNREAD__UNREAD__UNREAD__UNREAD
        GO TO L0;                                                              
SLUT:                                                                          
        D=DATUM;                                                               
        CALL PLOAD('Q       ');                                                
                                                                               
END;