MFmainframe-rea
WS carddemo · 26f629ef

Business rules · 91 guarded actionsCBSTM03A

Each row is an action and the full chain of conditions that must hold for it to run, recovered from nested IF / EVALUATE / PERFORM UNTIL scopes. Name the rule; the evidence is already attached.

88 levels

Condition names used

END-OF-TIOTmeans FILLER = LOW-VALUESCBSTM03A.CBL:260
NULL-UCBmeans UCB-ADDR = LOW-VALUESCBSTM03A.CBL:258
7 rules

(PROCEDURE DIVISION)

WhenThenAt
alwayscalc COMPUTE BUMP-TIOT = BUMP-TIOT + LENGTH OF TIOT-BLOCKCBSTM03A.CBL:272
  1. PERFORM UNTIL END-OF-TIOT OR TIO-LEN = LOW-VALUES
  2. NOT NULL-UCB
DISPLAY ': ' TIOCDDNM ' -- valid UCB'CBSTM03A.CBL:279
  1. PERFORM UNTIL END-OF-TIOT OR TIO-LEN = LOW-VALUES
  2. NULL-UCB
DISPLAY ': ' TIOCDDNM ' -- null UCB'CBSTM03A.CBL:281
  1. PERFORM UNTIL END-OF-TIOT OR TIO-LEN = LOW-VALUES
calc COMPUTE BUMP-TIOT = BUMP-TIOT + LENGTH OF TIOT-SEGCBSTM03A.CBL:283
  1. PERFORM UNTIL END-OF-TIOT OR TIO-LEN = LOW-VALUES
SET ADDRESS OF TIOT-ENTRY TO TIOT-INDEXCBSTM03A.CBL:284
  1. NOT NULL-UCB
DISPLAY ': ' TIOCDDNM ' -- valid UCB'CBSTM03A.CBL:288
  1. NULL-UCB
DISPLAY ': ' TIOCDDNM ' -- null UCB'CBSTM03A.CBL:290
6 rules

0000-START

WhenThenAt
  1. WS-FL-DD = 'TRNXFILE'
GO TO 8100-FILE-OPENCBSTM03A.CBL:301
  1. WS-FL-DD = 'XREFFILE'
GO TO 8100-FILE-OPENCBSTM03A.CBL:304
  1. WS-FL-DD = 'CUSTFILE'
GO TO 8100-FILE-OPENCBSTM03A.CBL:307
  1. WS-FL-DD = 'ACCTFILE'
GO TO 8100-FILE-OPENCBSTM03A.CBL:310
  1. WS-FL-DD = 'READTRNX'
GO TO 8500-READTRNX-READCBSTM03A.CBL:312
  1. WS-FL-DD is none of ['TRNXFILE'; 'XREFFILE'; 'CUSTFILE'; 'ACCTFILE'; 'READTRNX']
GO TO 9999-GOBACKCBSTM03A.CBL:314
7 rules

1000-MAINLINE

WhenThenAt
  1. PERFORM UNTIL END-OF-FILE = 'Y'
  2. END-OF-FILE = 'N'
PERFORM 1000-XREFFILE-GET-NEXTCBSTM03A.CBL:319
  1. PERFORM UNTIL END-OF-FILE = 'Y'
  2. END-OF-FILE = 'N'
  3. END-OF-FILE = 'N'
PERFORM 2000-CUSTFILE-GETCBSTM03A.CBL:321
  1. PERFORM UNTIL END-OF-FILE = 'Y'
  2. END-OF-FILE = 'N'
  3. END-OF-FILE = 'N'
PERFORM 3000-ACCTFILE-GETCBSTM03A.CBL:322
  1. PERFORM UNTIL END-OF-FILE = 'Y'
  2. END-OF-FILE = 'N'
  3. END-OF-FILE = 'N'
PERFORM 5000-CREATE-STATEMENTCBSTM03A.CBL:323
  1. PERFORM UNTIL END-OF-FILE = 'Y'
  2. END-OF-FILE = 'N'
  3. END-OF-FILE = 'N'
MOVE 1 TO CR-JMPCBSTM03A.CBL:324
  1. PERFORM UNTIL END-OF-FILE = 'Y'
  2. END-OF-FILE = 'N'
  3. END-OF-FILE = 'N'
MOVE ZERO TO WS-TOTAL-AMTCBSTM03A.CBL:325
  1. PERFORM UNTIL END-OF-FILE = 'Y'
  2. END-OF-FILE = 'N'
  3. END-OF-FILE = 'N'
PERFORM 4000-TRNXFILE-GETCBSTM03A.CBL:326
5 rules

1000-XREFFILE-GET-NEXT

WhenThenAt
always MOVE 'XREFFILE' TO WS-M03B-DDCBSTM03A.CBL:347
  1. WS-M03B-RC = '10'
MOVE 'Y' TO END-OF-FILECBSTM03A.CBL:357
  1. WS-M03B-RC is none of ['00'; '10']
DISPLAY 'ERROR READING XREFFILE'CBSTM03A.CBL:359
  1. WS-M03B-RC is none of ['00'; '10']
DISPLAY 'RETURN CODE: ' WS-M03B-RCCBSTM03A.CBL:360
  1. WS-M03B-RC is none of ['00'; '10']
PERFORM 9999-ABEND-PROGRAMCBSTM03A.CBL:361
5 rules

2000-CUSTFILE-GET

WhenThenAt
always MOVE 'CUSTFILE' TO WS-M03B-DDCBSTM03A.CBL:370
alwayscalc COMPUTE WS-M03B-KEY-LN = LENGTH OF XREF-CUST-IDCBSTM03A.CBL:374
  1. WS-M03B-RC is none of ['00']
DISPLAY 'ERROR READING CUSTFILE'CBSTM03A.CBL:383
  1. WS-M03B-RC is none of ['00']
DISPLAY 'RETURN CODE: ' WS-M03B-RCCBSTM03A.CBL:384
  1. WS-M03B-RC is none of ['00']
PERFORM 9999-ABEND-PROGRAMCBSTM03A.CBL:385
5 rules

3000-ACCTFILE-GET

WhenThenAt
always MOVE 'ACCTFILE' TO WS-M03B-DDCBSTM03A.CBL:394
alwayscalc COMPUTE WS-M03B-KEY-LN = LENGTH OF XREF-ACCT-IDCBSTM03A.CBL:398
  1. WS-M03B-RC is none of ['00']
DISPLAY 'ERROR READING ACCTFILE'CBSTM03A.CBL:407
  1. WS-M03B-RC is none of ['00']
DISPLAY 'RETURN CODE: ' WS-M03B-RCCBSTM03A.CBL:408
  1. WS-M03B-RC is none of ['00']
PERFORM 9999-ABEND-PROGRAMCBSTM03A.CBL:409
6 rules

4000-TRNXFILE-GET

WhenThenAt
  1. PERFORM VARYING CR-JMP FROM 1 BY 1 UNTIL CR-JMP > CR-CNT OR (WS-CARD-NUM (CR-JMP) > XREF-CARD-NUM)
  2. XREF-CARD-NUM = WS-CARD-NUM (CR-JMP)
MOVE WS-CARD-NUM (CR-JMP) TO TRNX-CARD-NUMCBSTM03A.CBL:421
  1. PERFORM VARYING CR-JMP FROM 1 BY 1 UNTIL CR-JMP > CR-CNT OR (WS-CARD-NUM (CR-JMP) > XREF-CARD-NUM)
  2. XREF-CARD-NUM = WS-CARD-NUM (CR-JMP)
PERFORM VARYING TR-JMP FROM 1 BY 1 UNTIL (TR-JMP > WS-TRCT (CR-JMP))CBSTM03A.CBL:422–423
  1. PERFORM VARYING CR-JMP FROM 1 BY 1 UNTIL CR-JMP > CR-CNT OR (WS-CARD-NUM (CR-JMP) > XREF-CARD-NUM)
  2. XREF-CARD-NUM = WS-CARD-NUM (CR-JMP)
  3. PERFORM VARYING TR-JMP FROM 1 BY 1 UNTIL (TR-JMP > WS-TRCT (CR-JMP))
MOVE WS-TRAN-NUM (CR-JMP TR-JMP) TO TRNX-IDCBSTM03A.CBL:424–425
  1. PERFORM VARYING CR-JMP FROM 1 BY 1 UNTIL CR-JMP > CR-CNT OR (WS-CARD-NUM (CR-JMP) > XREF-CARD-NUM)
  2. XREF-CARD-NUM = WS-CARD-NUM (CR-JMP)
  3. PERFORM VARYING TR-JMP FROM 1 BY 1 UNTIL (TR-JMP > WS-TRCT (CR-JMP))
MOVE WS-TRAN-REST (CR-JMP TR-JMP) TO TRNX-RESTCBSTM03A.CBL:426–427
  1. PERFORM VARYING CR-JMP FROM 1 BY 1 UNTIL CR-JMP > CR-CNT OR (WS-CARD-NUM (CR-JMP) > XREF-CARD-NUM)
  2. XREF-CARD-NUM = WS-CARD-NUM (CR-JMP)
  3. PERFORM VARYING TR-JMP FROM 1 BY 1 UNTIL (TR-JMP > WS-TRCT (CR-JMP))
PERFORM 6000-WRITE-TRANSCBSTM03A.CBL:428
  1. PERFORM VARYING CR-JMP FROM 1 BY 1 UNTIL CR-JMP > CR-CNT OR (WS-CARD-NUM (CR-JMP) > XREF-CARD-NUM)
  2. XREF-CARD-NUM = WS-CARD-NUM (CR-JMP)
  3. PERFORM VARYING TR-JMP FROM 1 BY 1 UNTIL (TR-JMP > WS-TRCT (CR-JMP))
calc ADD TRNX-AMT TO WS-TOTAL-AMTCBSTM03A.CBL:429
8 rules

8100-TRNXFILE-OPEN

WhenThenAt
always MOVE 'TRNXFILE' TO WS-M03B-DDCBSTM03A.CBL:731
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'ERROR OPENING TRNXFILE'CBSTM03A.CBL:739
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'RETURN CODE: ' WS-M03B-RCCBSTM03A.CBL:740
  1. NOT (WS-M03B-RC = '00' OR '04')
PERFORM 9999-ABEND-PROGRAMCBSTM03A.CBL:741
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'ERROR READING TRNXFILE'CBSTM03A.CBL:751
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'RETURN CODE: ' WS-M03B-RCCBSTM03A.CBL:752
  1. NOT (WS-M03B-RC = '00' OR '04')
PERFORM 9999-ABEND-PROGRAMCBSTM03A.CBL:753
always MOVE 'READTRNX' TO WS-FL-DDCBSTM03A.CBL:760
5 rules

8200-XREFFILE-OPEN

WhenThenAt
always MOVE 'XREFFILE' TO WS-M03B-DDCBSTM03A.CBL:766
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'ERROR OPENING XREFFILE'CBSTM03A.CBL:774
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'RETURN CODE: ' WS-M03B-RCCBSTM03A.CBL:775
  1. NOT (WS-M03B-RC = '00' OR '04')
PERFORM 9999-ABEND-PROGRAMCBSTM03A.CBL:776
always MOVE 'CUSTFILE' TO WS-FL-DDCBSTM03A.CBL:779
5 rules

8300-CUSTFILE-OPEN

WhenThenAt
always MOVE 'CUSTFILE' TO WS-M03B-DDCBSTM03A.CBL:784
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'ERROR OPENING CUSTFILE'CBSTM03A.CBL:792
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'RETURN CODE: ' WS-M03B-RCCBSTM03A.CBL:793
  1. NOT (WS-M03B-RC = '00' OR '04')
PERFORM 9999-ABEND-PROGRAMCBSTM03A.CBL:794
always MOVE 'ACCTFILE' TO WS-FL-DDCBSTM03A.CBL:797
4 rules

8400-ACCTFILE-OPEN

WhenThenAt
always MOVE 'ACCTFILE' TO WS-M03B-DDCBSTM03A.CBL:802
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'ERROR OPENING ACCTFILE'CBSTM03A.CBL:810
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'RETURN CODE: ' WS-M03B-RCCBSTM03A.CBL:811
  1. NOT (WS-M03B-RC = '00' OR '04')
PERFORM 9999-ABEND-PROGRAMCBSTM03A.CBL:812
11 rules

8500-READTRNX-READ

WhenThenAt
  1. WS-SAVE-CARD = TRNX-CARD-NUM
calc ADD 1 TO TR-CNTCBSTM03A.CBL:820
  1. NOT (WS-SAVE-CARD = TRNX-CARD-NUM)
MOVE TR-CNT TO WS-TRCT (CR-CNT)CBSTM03A.CBL:822
  1. NOT (WS-SAVE-CARD = TRNX-CARD-NUM)
calc ADD 1 TO CR-CNTCBSTM03A.CBL:823
  1. NOT (WS-SAVE-CARD = TRNX-CARD-NUM)
MOVE 1 TO TR-CNTCBSTM03A.CBL:824
always MOVE 'TRNXFILE' TO WS-M03B-DDCBSTM03A.CBL:832
  1. WS-M03B-RC = '00'
MOVE WS-M03B-FLDT TO TRNX-RECORDCBSTM03A.CBL:839
  1. WS-M03B-RC = '00'
GO TO 8500-READTRNX-READCBSTM03A.CBL:840
  1. WS-M03B-RC = '10'
GO TO 8599-EXITCBSTM03A.CBL:842
  1. WS-M03B-RC is none of ['00'; '10']
DISPLAY 'ERROR READING TRNXFILE'CBSTM03A.CBL:844
  1. WS-M03B-RC is none of ['00'; '10']
DISPLAY 'RETURN CODE: ' WS-M03B-RCCBSTM03A.CBL:845
  1. WS-M03B-RC is none of ['00'; '10']
PERFORM 9999-ABEND-PROGRAMCBSTM03A.CBL:846
1 rules

8599-EXIT

WhenThenAt
always MOVE 'XREFFILE' TO WS-FL-DDCBSTM03A.CBL:851
4 rules

9100-TRNXFILE-CLOSE

WhenThenAt
always MOVE 'TRNXFILE' TO WS-M03B-DDCBSTM03A.CBL:857
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'ERROR CLOSING TRNXFILE'CBSTM03A.CBL:865
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'RETURN CODE: ' WS-M03B-RCCBSTM03A.CBL:866
  1. NOT (WS-M03B-RC = '00' OR '04')
PERFORM 9999-ABEND-PROGRAMCBSTM03A.CBL:867
4 rules

9200-XREFFILE-CLOSE

WhenThenAt
always MOVE 'XREFFILE' TO WS-M03B-DDCBSTM03A.CBL:874
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'ERROR CLOSING XREFFILE'CBSTM03A.CBL:882
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'RETURN CODE: ' WS-M03B-RCCBSTM03A.CBL:883
  1. NOT (WS-M03B-RC = '00' OR '04')
PERFORM 9999-ABEND-PROGRAMCBSTM03A.CBL:884
4 rules

9300-CUSTFILE-CLOSE

WhenThenAt
always MOVE 'CUSTFILE' TO WS-M03B-DDCBSTM03A.CBL:890
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'ERROR CLOSING CUSTFILE'CBSTM03A.CBL:898
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'RETURN CODE: ' WS-M03B-RCCBSTM03A.CBL:899
  1. NOT (WS-M03B-RC = '00' OR '04')
PERFORM 9999-ABEND-PROGRAMCBSTM03A.CBL:900
4 rules

9400-ACCTFILE-CLOSE

WhenThenAt
always MOVE 'ACCTFILE' TO WS-M03B-DDCBSTM03A.CBL:906
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'ERROR CLOSING ACCTFILE'CBSTM03A.CBL:914
  1. NOT (WS-M03B-RC = '00' OR '04')
DISPLAY 'RETURN CODE: ' WS-M03B-RCCBSTM03A.CBL:915
  1. NOT (WS-M03B-RC = '00' OR '04')
PERFORM 9999-ABEND-PROGRAMCBSTM03A.CBL:916