MFmainframe-rea
WS carddemo · 26f629ef

Business rules · 54 guarded actionsCBPAUP0C

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

ERR-FLG-ONmeans WS-ERR-FLG = 'Y'CBPAUP0C.cbl:60
END-OF-AUTHDBmeans WS-END-OF-AUTHDB-FLAG = 'Y'CBPAUP0C.cbl:63
NO-MORE-AUTHSmeans WS-MORE-AUTHS-FLAG = 'N'CBPAUP0C.cbl:67
QUALIFIED-FOR-DELETEmeans WS-QUALIFY-DELETE-FLAG = 'Y'CBPAUP0C.cbl:69
DEBUG-ONmeans P-DEBUG-FLAG = 'Y'CBPAUP0C.cbl:106
9 rules

MAIN-PARA

WhenThenAt
  1. PERFORM UNTIL ERR-FLG-ON OR END-OF-AUTHDB
PERFORM 3000-FIND-NEXT-AUTH-DTL THRU 3000-EXITCBPAUP0C.cbl:144
  1. PERFORM UNTIL ERR-FLG-ON OR END-OF-AUTHDB
PERFORM UNTIL NO-MORE-AUTHSCBPAUP0C.cbl:146
  1. PERFORM UNTIL ERR-FLG-ON OR END-OF-AUTHDB
  2. PERFORM UNTIL NO-MORE-AUTHS
PERFORM 4000-CHECK-IF-EXPIRED THRU 4000-EXITCBPAUP0C.cbl:147
  1. PERFORM UNTIL ERR-FLG-ON OR END-OF-AUTHDB
  2. PERFORM UNTIL NO-MORE-AUTHS
  3. QUALIFIED-FOR-DELETE
PERFORM 5000-DELETE-AUTH-DTL THRU 5000-EXITCBPAUP0C.cbl:150
  1. PERFORM UNTIL ERR-FLG-ON OR END-OF-AUTHDB
  2. PERFORM UNTIL NO-MORE-AUTHS
PERFORM 3000-FIND-NEXT-AUTH-DTL THRU 3000-EXITCBPAUP0C.cbl:153
  1. PERFORM UNTIL ERR-FLG-ON OR END-OF-AUTHDB
  2. PA-APPROVED-AUTH-CNT <= 0 AND PA-APPROVED-AUTH-CNT <= 0
PERFORM 6000-DELETE-AUTH-SUMMARY THRU 6000-EXITCBPAUP0C.cbl:157
  1. PERFORM UNTIL ERR-FLG-ON OR END-OF-AUTHDB
  2. WS-AUTH-SMRY-PROC-CNT > P-CHKP-FREQ
PERFORM 9000-TAKE-CHECKPOINT THRU 9000-EXITCBPAUP0C.cbl:161
  1. PERFORM UNTIL ERR-FLG-ON OR END-OF-AUTHDB
  2. WS-AUTH-SMRY-PROC-CNT > P-CHKP-FREQ
MOVE 0 TO WS-AUTH-SMRY-PROC-CNTCBPAUP0C.cbl:163
  1. PERFORM UNTIL ERR-FLG-ON OR END-OF-AUTHDB
PERFORM 2000-FIND-NEXT-AUTH-SUMMARY THRU 2000-EXITCBPAUP0C.cbl:165
5 rules

1000-INITIALIZE

WhenThenAt
  1. P-EXPIRY-DAYS IS NUMERIC
MOVE P-EXPIRY-DAYS TO WS-EXPIRY-DAYSCBPAUP0C.cbl:197
  1. NOT (P-EXPIRY-DAYS IS NUMERIC)
MOVE 5 TO WS-EXPIRY-DAYSCBPAUP0C.cbl:199
  1. P-CHKP-FREQ = SPACES OR 0 OR LOW-VALUES
MOVE 5 TO P-CHKP-FREQCBPAUP0C.cbl:202
  1. P-CHKP-DIS-FREQ = SPACES OR 0 OR LOW-VALUES
MOVE 10 TO P-CHKP-DIS-FREQCBPAUP0C.cbl:205
  1. P-DEBUG-FLAG NOT = 'Y'
MOVE 'N' TO P-DEBUG-FLAGCBPAUP0C.cbl:208
9 rules

2000-FIND-NEXT-AUTH-SUMMARY

WhenThenAt
  1. DEBUG-ON
DISPLAY 'DEBUG: AUTH SMRY READ : ' WS-NO-SUMRY-READCBPAUP0C.cbl:220
  1. DIBSTAT = ' '
SET NOT-END-OF-AUTHDB TO TRUECBPAUP0C.cbl:230
  1. DIBSTAT = ' '
calc ADD 1 TO WS-NO-SUMRY-READCBPAUP0C.cbl:231
  1. DIBSTAT = ' '
calc ADD 1 TO WS-AUTH-SMRY-PROC-CNTCBPAUP0C.cbl:232
  1. DIBSTAT = ' '
MOVE PA-ACCT-ID TO WS-CURR-APP-IDCBPAUP0C.cbl:233
  1. DIBSTAT = 'GB'
SET END-OF-AUTHDB TO TRUECBPAUP0C.cbl:235
  1. DIBSTAT is none of [' '; 'GB']
DISPLAY 'AUTH SUMMARY READ FAILED :' DIBSTATCBPAUP0C.cbl:237
  1. DIBSTAT is none of [' '; 'GB']
DISPLAY 'SUMMARY READ BEFORE ABEND :' WS-NO-SUMRY-READCBPAUP0C.cbl:238–239
  1. DIBSTAT is none of [' '; 'GB']
PERFORM 9999-ABENDCBPAUP0C.cbl:240
8 rules

3000-FIND-NEXT-AUTH-DTL

WhenThenAt
  1. DEBUG-ON
DISPLAY 'DEBUG: AUTH DTL READ : ' WS-NO-DTL-READCBPAUP0C.cbl:252
  1. DIBSTAT = ' '
SET MORE-AUTHS TO TRUECBPAUP0C.cbl:261
  1. DIBSTAT = ' '
calc ADD 1 TO WS-NO-DTL-READCBPAUP0C.cbl:262
  1. DIBSTAT = 'GE' OR DIBSTAT = 'GB'
SET NO-MORE-AUTHS TO TRUECBPAUP0C.cbl:265
  1. DIBSTAT is none of [' '; 'GE'; 'GB']
DISPLAY 'AUTH DETAIL READ FAILED :' DIBSTATCBPAUP0C.cbl:267
  1. DIBSTAT is none of [' '; 'GE'; 'GB']
DISPLAY 'SUMMARY AUTH APP ID :' PA-ACCT-IDCBPAUP0C.cbl:268
  1. DIBSTAT is none of [' '; 'GE'; 'GB']
DISPLAY 'DETAIL READ BEFORE ABEND :' WS-NO-DTL-READCBPAUP0C.cbl:269
  1. DIBSTAT is none of [' '; 'GE'; 'GB']
PERFORM 9999-ABENDCBPAUP0C.cbl:270
8 rules

4000-CHECK-IF-EXPIRED

WhenThenAt
alwayscalc COMPUTE WS-AUTH-DATE = 99999 - PA-AUTH-DATE-9CCBPAUP0C.cbl:280
alwayscalc COMPUTE WS-DAY-DIFF = CURRENT-YYDDD - WS-AUTH-DATECBPAUP0C.cbl:282
  1. WS-DAY-DIFF >= WS-EXPIRY-DAYS
SET QUALIFIED-FOR-DELETE TO TRUECBPAUP0C.cbl:285
  1. WS-DAY-DIFF >= WS-EXPIRY-DAYS
  2. PA-AUTH-RESP-CODE = '00'
calc SUBTRACT 1 FROM PA-APPROVED-AUTH-CNTCBPAUP0C.cbl:288
  1. WS-DAY-DIFF >= WS-EXPIRY-DAYS
  2. PA-AUTH-RESP-CODE = '00'
calc SUBTRACT PA-APPROVED-AMT FROM PA-APPROVED-AUTH-AMTCBPAUP0C.cbl:289
  1. WS-DAY-DIFF >= WS-EXPIRY-DAYS
  2. NOT (PA-AUTH-RESP-CODE = '00')
calc SUBTRACT 1 FROM PA-DECLINED-AUTH-CNTCBPAUP0C.cbl:291
  1. WS-DAY-DIFF >= WS-EXPIRY-DAYS
  2. NOT (PA-AUTH-RESP-CODE = '00')
calc SUBTRACT PA-TRANSACTION-AMT FROM PA-DECLINED-AUTH-AMTCBPAUP0C.cbl:292
  1. NOT (WS-DAY-DIFF >= WS-EXPIRY-DAYS)
SET NOT-QUALIFIED-FOR-DELETE TO TRUECBPAUP0C.cbl:295
5 rules

5000-DELETE-AUTH-DTL

WhenThenAt
  1. DEBUG-ON
DISPLAY 'DEBUG: AUTH DTL DLET : ' PA-ACCT-IDCBPAUP0C.cbl:307
  1. DIBSTAT = SPACES
calc ADD 1 TO WS-NO-DTL-DELETEDCBPAUP0C.cbl:316
  1. NOT (DIBSTAT = SPACES)
DISPLAY 'AUTH DETAIL DELETE FAILED :' DIBSTATCBPAUP0C.cbl:318
  1. NOT (DIBSTAT = SPACES)
DISPLAY 'AUTH APP ID :' PA-ACCT-IDCBPAUP0C.cbl:319
  1. NOT (DIBSTAT = SPACES)
PERFORM 9999-ABENDCBPAUP0C.cbl:320
5 rules

6000-DELETE-AUTH-SUMMARY

WhenThenAt
  1. DEBUG-ON
DISPLAY 'DEBUG: AUTH SMRY DLET : ' PA-ACCT-IDCBPAUP0C.cbl:332
  1. DIBSTAT = SPACES
calc ADD 1 TO WS-NO-SUMRY-DELETEDCBPAUP0C.cbl:341
  1. NOT (DIBSTAT = SPACES)
DISPLAY 'AUTH SUMMARY DELETE FAILED :' DIBSTATCBPAUP0C.cbl:343
  1. NOT (DIBSTAT = SPACES)
DISPLAY 'AUTH APP ID :' PA-ACCT-IDCBPAUP0C.cbl:344
  1. NOT (DIBSTAT = SPACES)
PERFORM 9999-ABENDCBPAUP0C.cbl:345
5 rules

9000-TAKE-CHECKPOINT

WhenThenAt
  1. DIBSTAT = SPACES
calc ADD 1 TO WS-NO-CHKPCBPAUP0C.cbl:359
  1. DIBSTAT = SPACES
  2. WS-NO-CHKP >= P-CHKP-DIS-FREQ
MOVE 0 TO WS-NO-CHKPCBPAUP0C.cbl:361
  1. DIBSTAT = SPACES
  2. WS-NO-CHKP >= P-CHKP-DIS-FREQ
DISPLAY 'CHKP SUCCESS: AUTH COUNT - ' WS-NO-SUMRY-READ ', APP ID - ' WS-CURR-APP-IDCBPAUP0C.cbl:362–363
  1. NOT (DIBSTAT = SPACES)
DISPLAY 'CHKP FAILED: DIBSTAT - ' DIBSTAT ', REC COUNT - ' WS-NO-SUMRY-READ ', APP ID - ' WS-CURR-APP-IDCBPAUP0C.cbl:366–368
  1. NOT (DIBSTAT = SPACES)
PERFORM 9999-ABENDCBPAUP0C.cbl:369