finding_id	program	family	paragraph	line	note	cites	detector_row_json
CBACT04C:unreachable_loop_closeout:0	CBACT04C	unreachable_loop_closeout	1050-UPDATE-ACCOUNT	271	Control-flow hazard: the ELSE-arm call at L302 is entry-unreachable; the EOF-time final flush never executes; 1050-UPDATE-ACCOUNT itself runs at each account boundary (L279); consequence: the LAST account is never written.	1050-UPDATE-ACCOUNT @L271 [primary] | 1050-UPDATE-ACCOUNT @L302 [sites] | 1050-UPDATE-ACCOUNT @L279 [other_call_sites:LIVE:then_action:then_span]	"{""line"":271,""note"":""Control-flow hazard: the ELSE-arm call at L302 is entry-unreachable; the EOF-time final flush never executes; 1050-UPDATE-ACCOUNT itself runs at each account boundary (L279); consequence: the LAST account is never written."",""other_call_sites"":[{""basis"":""then_action:then_span"",""line"":279,""liveness"":""LIVE"",""paragraph"":""1050-UPDATE-ACCOUNT""}],""paragraph"":""1050-UPDATE-ACCOUNT"",""program"":""CBACT04C"",""sites"":[{""line"":302,""paragraph"":""1050-UPDATE-ACCOUNT""}],""status"":""DETECTED""}"
CBACT04C:computes_without_rounded:0	CBACT04C	computes_without_rounded	1300-COMPUTE-INTEREST	547	Decimal target without ROUNDED — implicit truncation per COBOL standard	1300-COMPUTE-INTEREST @L547 [primary]	"{""expression"":""( TRAN-CAT-BAL * DIS-INT-RATE) / 1200"",""line"":547,""note"":""Decimal target without ROUNDED \u2014 implicit truncation per COBOL standard"",""paragraph"":""1300-COMPUTE-INTEREST"",""program"":""CBACT04C"",""target"":""WS-MONTHLY-INT"",""target_pic"":""S9(09)V99.""}"
CBTRN01C:silent_io_failures:0	CBTRN01C	silent_io_failures	2000-LOOKUP-XREF	348	INVALID KEY handler does not abend (no 9999-ABEND-PROGRAM, STOP RUN, GOBACK, or EXIT PROGRAM); failure is silent	2000-LOOKUP-XREF @L348 [primary]	"{""file"":""XREF-FILE"",""handler_excerpt"":""READ XREF-FILE  RECORD INTO CARD-XREF-RECORD | KEY IS FD-XREF-CARD-NUM | INVALID KEY | DISPLAY 'INVALID CARD NUMBER FOR XREF' | MOVE 4 TO WS-XREF-READ-STATUS | NOT INVALID KEY | DISPLAY 'SUCCESSFUL RE"",""line"":348,""note"":""INVALID KEY handler does not abend (no 9999-ABEND-PROGRAM, STOP RUN, GOBACK, or EXIT PROGRAM); failure is silent"",""operation"":""READ"",""paragraph"":""2000-LOOKUP-XREF"",""program"":""CBTRN01C"",""tolerated_statuses"":[]}"
CBTRN01C:silent_io_failures:1	CBTRN01C	silent_io_failures	3000-READ-ACCOUNT	362	INVALID KEY handler does not abend (no 9999-ABEND-PROGRAM, STOP RUN, GOBACK, or EXIT PROGRAM); failure is silent	3000-READ-ACCOUNT @L362 [primary]	"{""file"":""ACCOUNT-FILE"",""handler_excerpt"":""READ ACCOUNT-FILE RECORD INTO ACCOUNT-RECORD | KEY IS FD-ACCT-ID | INVALID KEY | DISPLAY 'INVALID ACCOUNT NUMBER FOUND' | MOVE 4 TO WS-ACCT-READ-STATUS | NOT INVALID KEY | DISPLAY 'SUCCESSFUL READ OF "",""line"":362,""note"":""INVALID KEY handler does not abend (no 9999-ABEND-PROGRAM, STOP RUN, GOBACK, or EXIT PROGRAM); failure is silent"",""operation"":""READ"",""paragraph"":""3000-READ-ACCOUNT"",""program"":""CBTRN01C"",""tolerated_statuses"":[]}"
CBTRN01C:status_variable_mismatches:0	CBTRN01C	status_variable_mismatches	9000-DALYTRAN-CLOSE	492	Paragraph 9000-DALYTRAN-CLOSE operates on a different file than CUSTFILE-STATUS belongs to — error path MOVEs the wrong file's status to IO-STATUS	9000-DALYTRAN-CLOSE @L492 [primary]	"{""line"":492,""moved_status_var"":""CUSTFILE-STATUS"",""note"":""Paragraph 9000-DALYTRAN-CLOSE operates on a different file than CUSTFILE-STATUS belongs to \u2014 error path MOVEs the wrong file's status to IO-STATUS"",""paragraph"":""9000-DALYTRAN-CLOSE"",""paragraph_file_key"":""DALYTRAN"",""program"":""CBTRN01C""}"
CBTRN02C:silent_io_failures:0	CBTRN02C	silent_io_failures	1500-A-LOOKUP-XREF	474	INVALID KEY handler does not abend (no 9999-ABEND-PROGRAM, STOP RUN, GOBACK, or EXIT PROGRAM); failure is silent	1500-A-LOOKUP-XREF @L474 [primary]	"{""file"":""XREF-FILE"",""handler_excerpt"":""READ XREF-FILE INTO CARD-XREF-RECORD | INVALID KEY | MOVE 100 TO WS-VALIDATION-FAIL-REASON | MOVE 'INVALID CARD NUMBER FOUND' | TO WS-VALIDATION-FAIL-REASON-DESC | NOT INVALID KEY | CONTINUE | END-REA"",""line"":474,""note"":""INVALID KEY handler does not abend (no 9999-ABEND-PROGRAM, STOP RUN, GOBACK, or EXIT PROGRAM); failure is silent"",""operation"":""READ"",""paragraph"":""1500-A-LOOKUP-XREF"",""program"":""CBTRN02C"",""tolerated_statuses"":[]}"
CBTRN02C:silent_io_failures:1	CBTRN02C	silent_io_failures	1500-B-LOOKUP-ACCT	486	INVALID KEY handler does not abend (no 9999-ABEND-PROGRAM, STOP RUN, GOBACK, or EXIT PROGRAM); failure is silent	1500-B-LOOKUP-ACCT @L486 [primary]	"{""file"":""ACCOUNT-FILE"",""handler_excerpt"":""READ ACCOUNT-FILE INTO ACCOUNT-RECORD | INVALID KEY | MOVE 101 TO WS-VALIDATION-FAIL-REASON | MOVE 'ACCOUNT RECORD NOT FOUND' | TO WS-VALIDATION-FAIL-REASON-DESC | NOT INVALID KEY | COMPUTE WS-TEMP-BA"",""line"":486,""note"":""INVALID KEY handler does not abend (no 9999-ABEND-PROGRAM, STOP RUN, GOBACK, or EXIT PROGRAM); failure is silent"",""operation"":""READ"",""paragraph"":""1500-B-LOOKUP-ACCT"",""program"":""CBTRN02C"",""tolerated_statuses"":[]}"
CBTRN02C:silent_io_failures:2	CBTRN02C	silent_io_failures	2800-UPDATE-ACCOUNT-REC	645	INVALID KEY handler does not abend (no 9999-ABEND-PROGRAM, STOP RUN, GOBACK, or EXIT PROGRAM); failure is silent	2800-UPDATE-ACCOUNT-REC @L645 [primary]	"{""file"":""FD-ACCTFILE-REC"",""handler_excerpt"":""REWRITE FD-ACCTFILE-REC FROM  ACCOUNT-RECORD | INVALID KEY | MOVE 109 TO WS-VALIDATION-FAIL-REASON | MOVE 'ACCOUNT RECORD NOT FOUND' | TO WS-VALIDATION-FAIL-REASON-DESC | END-REWRITE."",""line"":645,""note"":""INVALID KEY handler does not abend (no 9999-ABEND-PROGRAM, STOP RUN, GOBACK, or EXIT PROGRAM); failure is silent"",""operation"":""REWRITE"",""paragraph"":""2800-UPDATE-ACCOUNT-REC"",""program"":""CBTRN02C"",""tolerated_statuses"":[]}"
CBTRN02C:status_variable_mismatches:0	CBTRN02C	status_variable_mismatches	9300-DALYREJS-CLOSE	740	Paragraph 9300-DALYREJS-CLOSE operates on a different file than XREFFILE-STATUS belongs to — error path MOVEs the wrong file's status to IO-STATUS	9300-DALYREJS-CLOSE @L740 [primary]	"{""line"":740,""moved_status_var"":""XREFFILE-STATUS"",""note"":""Paragraph 9300-DALYREJS-CLOSE operates on a different file than XREFFILE-STATUS belongs to \u2014 error path MOVEs the wrong file's status to IO-STATUS"",""paragraph"":""9300-DALYREJS-CLOSE"",""paragraph_file_key"":""DALYREJS"",""program"":""CBTRN02C""}"
CBTRN02C:accumulator_double_writes:0	CBTRN02C	accumulator_double_writes		(no line recorded)	POTENTIAL double-write: 'DALYTRAN-AMT' is added to 'TRAN-CAT-BAL' from multiple paragraphs. Survival across the second add is NOT mechanically provable — writers of its record 'DALYTRAN-RECORD': READ @ L437 (1000-DALYTRAN-GET-NEXT); MOVE @ L785 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L786 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L787 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L788 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L789 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L790 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L791 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L792 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L793 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L794 (Z-GET-DB2-FORMAT-TIMESTAMP). State the finding as potential; do NOT assert it occurs or cannot occur without source proof.	(paragraph not recorded) @(no line recorded) [primary] | 2700-A-CREATE-TCATBAL-REC @L599 [sites] | 2700-B-UPDATE-TCATBAL-REC @L618 [sites] | 1000-DALYTRAN-GET-NEXT @L437 [writers:read_into:READ] | Z-GET-DB2-FORMAT-TIMESTAMP @L785 [writers:write:MOVE] | Z-GET-DB2-FORMAT-TIMESTAMP @L786 [writers:write:MOVE] | Z-GET-DB2-FORMAT-TIMESTAMP @L787 [writers:write:MOVE] | Z-GET-DB2-FORMAT-TIMESTAMP @L788 [writers:write:MOVE] | Z-GET-DB2-FORMAT-TIMESTAMP @L789 [writers:write:MOVE] | Z-GET-DB2-FORMAT-TIMESTAMP @L790 [writers:write:MOVE] | Z-GET-DB2-FORMAT-TIMESTAMP @L791 [writers:write:MOVE] | Z-GET-DB2-FORMAT-TIMESTAMP @L792 [writers:write:MOVE] | Z-GET-DB2-FORMAT-TIMESTAMP @L793 [writers:write:MOVE] | Z-GET-DB2-FORMAT-TIMESTAMP @L794 [writers:write:MOVE]	"{""note"":""POTENTIAL double-write: 'DALYTRAN-AMT' is added to 'TRAN-CAT-BAL' from multiple paragraphs. Survival across the second add is NOT mechanically provable \u2014 writers of its record 'DALYTRAN-RECORD': READ @ L437 (1000-DALYTRAN-GET-NEXT); MOVE @ L785 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L786 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L787 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L788 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L789 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L790 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L791 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L792 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L793 (Z-GET-DB2-FORMAT-TIMESTAMP); MOVE @ L794 (Z-GET-DB2-FORMAT-TIMESTAMP). State the finding as potential; do NOT assert it occurs or cannot occur without source proof."",""program"":""CBTRN02C"",""sites"":[{""line"":599,""paragraph"":""2700-A-CREATE-TCATBAL-REC""},{""line"":618,""paragraph"":""2700-B-UPDATE-TCATBAL-REC""}],""source"":""DALYTRAN-AMT"",""status"":""POTENTIAL"",""survival_record"":""DALYTRAN-RECORD"",""target"":""TRAN-CAT-BAL"",""writers"":[{""kind"":""read_into"",""line"":437,""paragraph"":""1000-DALYTRAN-GET-NEXT"",""targets"":[""DALYTRAN-RECORD""],""text"":""READ DALYTRAN-FILE INTO DALYTRAN-RECORD."",""verb"":""READ""},{""kind"":""write"",""line"":785,""paragraph"":""Z-GET-DB2-FORMAT-TIMESTAMP"",""targets"":[""DB2-YYYY""],""text"":""MOVE COB-YYYY TO DB2-YYYY"",""verb"":""MOVE""},{""kind"":""write"",""line"":786,""paragraph"":""Z-GET-DB2-FORMAT-TIMESTAMP"",""targets"":[""DB2-MM""],""text"":""MOVE COB-MM   TO DB2-MM"",""verb"":""MOVE""},{""kind"":""write"",""line"":787,""paragraph"":""Z-GET-DB2-FORMAT-TIMESTAMP"",""targets"":[""DB2-DD""],""text"":""MOVE COB-DD   TO DB2-DD"",""verb"":""MOVE""},{""kind"":""write"",""line"":788,""paragraph"":""Z-GET-DB2-FORMAT-TIMESTAMP"",""targets"":[""DB2-HH""],""text"":""MOVE COB-HH   TO DB2-HH"",""verb"":""MOVE""},{""kind"":""write"",""line"":789,""paragraph"":""Z-GET-DB2-FORMAT-TIMESTAMP"",""targets"":[""DB2-MIN""],""text"":""MOVE COB-MIN  TO DB2-MIN"",""verb"":""MOVE""},{""kind"":""write"",""line"":790,""paragraph"":""Z-GET-DB2-FORMAT-TIMESTAMP"",""targets"":[""DB2-SS""],""text"":""MOVE COB-SS   TO DB2-SS"",""verb"":""MOVE""},{""kind"":""write"",""line"":791,""paragraph"":""Z-GET-DB2-FORMAT-TIMESTAMP"",""targets"":[""DB2-MIL""],""text"":""MOVE COB-MIL  TO DB2-MIL"",""verb"":""MOVE""},{""kind"":""write"",""line"":792,""paragraph"":""Z-GET-DB2-FORMAT-TIMESTAMP"",""targets"":[""DB2-REST""],""text"":""MOVE '0000'   TO DB2-REST"",""verb"":""MOVE""},{""kind"":""write"",""line"":793,""paragraph"":""Z-GET-DB2-FORMAT-TIMESTAMP"",""targets"":[""DB2-STREEP-1"",""DB2-STREEP-2"",""DB2-STREEP-3""],""text"":""MOVE '-' TO DB2-STREEP-1 DB2-STREEP-2 DB2-STREEP-3"",""verb"":""MOVE""},{""kind"":""write"",""line"":794,""paragraph"":""Z-GET-DB2-FORMAT-TIMESTAMP"",""targets"":[""DB2-DOT-1"",""DB2-DOT-2"",""DB2-DOT-3""],""text"":""MOVE '.' TO DB2-DOT-1 DB2-DOT-2 DB2-DOT-3"",""verb"":""MOVE""}]}"
CBTRN02C:computes_without_rounded:0	CBTRN02C	computes_without_rounded	1500-B-LOOKUP-ACCT	494	Decimal target without ROUNDED — implicit truncation per COBOL standard	1500-B-LOOKUP-ACCT @L494 [primary]	"{""expression"":""ACCT-CURR-CYC-CREDIT - ACCT-CURR-CYC-DEBIT + DALYTRAN-AMT"",""line"":494,""note"":""Decimal target without ROUNDED \u2014 implicit truncation per COBOL standard"",""paragraph"":""1500-B-LOOKUP-ACCT"",""program"":""CBTRN02C"",""target"":""WS-TEMP-BAL"",""target_pic"":""S9(09)V99.""}"
CBTRN03C:accumulator_double_writes:0	CBTRN03C	accumulator_double_writes		(no line recorded)	CONFIRMED double-write: the source operand 'TRAN-AMT' lives in record 'TRAN-RECORD', whose only writer is a READ ... INTO (READ @ L381 (1000-TRANFILE-GET-NEXT)); a READ INTO does NOT modify the receiving area on AT END, so 'TRAN-AMT' retains the final record's value and is added a second time. Document this as a real defect — do NOT dismiss it as zeroed or mutually exclusive.	(paragraph not recorded) @(no line recorded) [primary] | (paragraph not recorded) @L332 [sites] | 1100-WRITE-TRANSACTION-REPORT @L419 [sites] | 1000-TRANFILE-GET-NEXT @L381 [writers:read_into:READ]	"{""note"":""CONFIRMED double-write: the source operand 'TRAN-AMT' lives in record 'TRAN-RECORD', whose only writer is a READ ... INTO (READ @ L381 (1000-TRANFILE-GET-NEXT)); a READ INTO does NOT modify the receiving area on AT END, so 'TRAN-AMT' retains the final record's value and is added a second time. Document this as a real defect \u2014 do NOT dismiss it as zeroed or mutually exclusive."",""program"":""CBTRN03C"",""sites"":[{""line"":332,""paragraph"":null},{""line"":419,""paragraph"":""1100-WRITE-TRANSACTION-REPORT""}],""source"":""TRAN-AMT"",""status"":""CONFIRMED"",""survival_record"":""TRAN-RECORD"",""target"":""WS-ACCOUNT-TOTAL"",""writers"":[{""kind"":""read_into"",""line"":381,""paragraph"":""1000-TRANFILE-GET-NEXT"",""targets"":[""TRAN-RECORD""],""text"":""READ TRANSACT-FILE INTO TRAN-RECORD."",""verb"":""READ""}]}"
CBTRN03C:accumulator_double_writes:1	CBTRN03C	accumulator_double_writes		(no line recorded)	CONFIRMED double-write: the source operand 'TRAN-AMT' lives in record 'TRAN-RECORD', whose only writer is a READ ... INTO (READ @ L381 (1000-TRANFILE-GET-NEXT)); a READ INTO does NOT modify the receiving area on AT END, so 'TRAN-AMT' retains the final record's value and is added a second time. Document this as a real defect — do NOT dismiss it as zeroed or mutually exclusive.	(paragraph not recorded) @(no line recorded) [primary] | (paragraph not recorded) @L332 [sites] | 1100-WRITE-TRANSACTION-REPORT @L419 [sites] | 1000-TRANFILE-GET-NEXT @L381 [writers:read_into:READ]	"{""note"":""CONFIRMED double-write: the source operand 'TRAN-AMT' lives in record 'TRAN-RECORD', whose only writer is a READ ... INTO (READ @ L381 (1000-TRANFILE-GET-NEXT)); a READ INTO does NOT modify the receiving area on AT END, so 'TRAN-AMT' retains the final record's value and is added a second time. Document this as a real defect \u2014 do NOT dismiss it as zeroed or mutually exclusive."",""program"":""CBTRN03C"",""sites"":[{""line"":332,""paragraph"":null},{""line"":419,""paragraph"":""1100-WRITE-TRANSACTION-REPORT""}],""source"":""TRAN-AMT"",""status"":""CONFIRMED"",""survival_record"":""TRAN-RECORD"",""target"":""WS-PAGE-TOTAL"",""writers"":[{""kind"":""read_into"",""line"":381,""paragraph"":""1000-TRANFILE-GET-NEXT"",""targets"":[""TRAN-RECORD""],""text"":""READ TRANSACT-FILE INTO TRAN-RECORD."",""verb"":""READ""}]}"
COACTUPC:computes_without_rounded:0	COACTUPC	computes_without_rounded	1100-RECEIVE-MAP	3487	Decimal target without ROUNDED — implicit truncation per COBOL standard	1100-RECEIVE-MAP @L3487 [primary]	"{""expression"":""FUNCTION NUMVAL-C(ACRDLIMI OF CACTUPAI)"",""line"":3487,""note"":""Decimal target without ROUNDED \u2014 implicit truncation per COBOL standard"",""paragraph"":""1100-RECEIVE-MAP"",""program"":""COACTUPC"",""target"":""ACUP-NEW-CREDIT-LIMIT-N"",""target_pic"":""S9(10)V99.""}"
COACTUPC:computes_without_rounded:1	COACTUPC	computes_without_rounded	1100-RECEIVE-MAP	3501	Decimal target without ROUNDED — implicit truncation per COBOL standard	1100-RECEIVE-MAP @L3501 [primary]	"{""expression"":""FUNCTION NUMVAL-C(ACSHLIMI OF CACTUPAI)"",""line"":3501,""note"":""Decimal target without ROUNDED \u2014 implicit truncation per COBOL standard"",""paragraph"":""1100-RECEIVE-MAP"",""program"":""COACTUPC"",""target"":""ACUP-NEW-CASH-CREDIT-LIMIT-N"",""target_pic"":""S9(10)V99.""}"
COACTUPC:computes_without_rounded:2	COACTUPC	computes_without_rounded	1100-RECEIVE-MAP	3515	Decimal target without ROUNDED — implicit truncation per COBOL standard	1100-RECEIVE-MAP @L3515 [primary]	"{""expression"":""FUNCTION NUMVAL-C(ACUP-NEW-CURR-BAL-X)"",""line"":3515,""note"":""Decimal target without ROUNDED \u2014 implicit truncation per COBOL standard"",""paragraph"":""1100-RECEIVE-MAP"",""program"":""COACTUPC"",""target"":""ACUP-NEW-CURR-BAL-N"",""target_pic"":""S9(10)V99.""}"
COACTUPC:computes_without_rounded:3	COACTUPC	computes_without_rounded	1100-RECEIVE-MAP	3529	Decimal target without ROUNDED — implicit truncation per COBOL standard	1100-RECEIVE-MAP @L3529 [primary]	"{""expression"":""FUNCTION NUMVAL-C(ACRCYCRI OF CACTUPAI)"",""line"":3529,""note"":""Decimal target without ROUNDED \u2014 implicit truncation per COBOL standard"",""paragraph"":""1100-RECEIVE-MAP"",""program"":""COACTUPC"",""target"":""ACUP-NEW-CURR-CYC-CREDIT-N"",""target_pic"":""S9(10)V99.""}"
COACTUPC:computes_without_rounded:4	COACTUPC	computes_without_rounded	1100-RECEIVE-MAP	3543	Decimal target without ROUNDED — implicit truncation per COBOL standard	1100-RECEIVE-MAP @L3543 [primary]	"{""expression"":""FUNCTION NUMVAL-C(ACRCYDBI OF CACTUPAI)"",""line"":3543,""note"":""Decimal target without ROUNDED \u2014 implicit truncation per COBOL standard"",""paragraph"":""1100-RECEIVE-MAP"",""program"":""COACTUPC"",""target"":""ACUP-NEW-CURR-CYC-DEBIT-N"",""target_pic"":""S9(10)V99.""}"
COACTVWC:uninvoked_paragraph:0	COACTVWC	uninvoked_paragraph	SEND-LONG-TEXT	1706	Paragraph SEND-LONG-TEXT has no live inbound PERFORM, THRU, GO TO, or fall-through path from the program's recorded entry surfaces; its logic is dead at paragraph granularity. The dead paragraph still contains SEND_TEXT work at L1707.	SEND-LONG-TEXT @L1706 [primary] | SEND-LONG-TEXT @L1707 [sites:SEND_TEXT] | SEND-LONG-TEXT @L1714 [sites:RETURN]	"{""end_line"":1716,""line"":1706,""note"":""Paragraph SEND-LONG-TEXT has no live inbound PERFORM, THRU, GO TO, or fall-through path from the program's recorded entry surfaces; its logic is dead at paragraph granularity. The dead paragraph still contains SEND_TEXT work at L1707."",""paragraph"":""SEND-LONG-TEXT"",""program"":""COACTVWC"",""sites"":[{""kind"":""SEND_TEXT"",""line"":1707,""paragraph"":""SEND-LONG-TEXT""},{""kind"":""RETURN"",""line"":1714,""paragraph"":""SEND-LONG-TEXT""}]}"
COBIL00C:computes_without_rounded:0	COBIL00C	computes_without_rounded	PROCESS-ENTER-KEY	590	Decimal target without ROUNDED — implicit truncation per COBOL standard	PROCESS-ENTER-KEY @L590 [primary]	"{""expression"":""ACCT-CURR-BAL - TRAN-AMT"",""line"":590,""note"":""Decimal target without ROUNDED \u2014 implicit truncation per COBOL standard"",""paragraph"":""PROCESS-ENTER-KEY"",""program"":""COBIL00C"",""target"":""ACCT-CURR-BAL"",""target_pic"":""S9(10)V99.""}"
COCRDLIC:uninvoked_paragraph:0	COCRDLIC	uninvoked_paragraph	SEND-PLAIN-TEXT	2318	Paragraph SEND-PLAIN-TEXT has no live inbound PERFORM, THRU, GO TO, or fall-through path from the program's recorded entry surfaces; its logic is dead at paragraph granularity. The dead paragraph still contains SEND_TEXT work at L2319.	SEND-PLAIN-TEXT @L2318 [primary] | SEND-PLAIN-TEXT @L2319 [sites:SEND_TEXT] | SEND-PLAIN-TEXT @L2326 [sites:RETURN]	"{""end_line"":2328,""line"":2318,""note"":""Paragraph SEND-PLAIN-TEXT has no live inbound PERFORM, THRU, GO TO, or fall-through path from the program's recorded entry surfaces; its logic is dead at paragraph granularity. The dead paragraph still contains SEND_TEXT work at L2319."",""paragraph"":""SEND-PLAIN-TEXT"",""program"":""COCRDLIC"",""sites"":[{""kind"":""SEND_TEXT"",""line"":2319,""paragraph"":""SEND-PLAIN-TEXT""},{""kind"":""RETURN"",""line"":2326,""paragraph"":""SEND-PLAIN-TEXT""}]}"
COCRDLIC:uninvoked_paragraph:1	COCRDLIC	uninvoked_paragraph	SEND-LONG-TEXT	2337	Paragraph SEND-LONG-TEXT has no live inbound PERFORM, THRU, GO TO, or fall-through path from the program's recorded entry surfaces; its logic is dead at paragraph granularity. The dead paragraph still contains SEND_TEXT work at L2338.	SEND-LONG-TEXT @L2337 [primary] | SEND-LONG-TEXT @L2338 [sites:SEND_TEXT] | SEND-LONG-TEXT @L2345 [sites:RETURN]	"{""end_line"":2347,""line"":2337,""note"":""Paragraph SEND-LONG-TEXT has no live inbound PERFORM, THRU, GO TO, or fall-through path from the program's recorded entry surfaces; its logic is dead at paragraph granularity. The dead paragraph still contains SEND_TEXT work at L2338."",""paragraph"":""SEND-LONG-TEXT"",""program"":""COCRDLIC"",""sites"":[{""kind"":""SEND_TEXT"",""line"":2338,""paragraph"":""SEND-LONG-TEXT""},{""kind"":""RETURN"",""line"":2345,""paragraph"":""SEND-LONG-TEXT""}]}"
COCRDSLC:uninvoked_paragraph:0	COCRDSLC	uninvoked_paragraph	9150-GETCARD-BYACCT	1292	Paragraph 9150-GETCARD-BYACCT has no live inbound PERFORM, THRU, GO TO, or fall-through path from the program's recorded entry surfaces; its logic is dead at paragraph granularity. The dead paragraph still contains READ work at L1296.	9150-GETCARD-BYACCT @L1292 [primary] | 9150-GETCARD-BYACCT @L1296 [sites:READ]	"{""end_line"":1322,""line"":1292,""note"":""Paragraph 9150-GETCARD-BYACCT has no live inbound PERFORM, THRU, GO TO, or fall-through path from the program's recorded entry surfaces; its logic is dead at paragraph granularity. The dead paragraph still contains READ work at L1296."",""paragraph"":""9150-GETCARD-BYACCT"",""program"":""COCRDSLC"",""sites"":[{""kind"":""READ"",""line"":1296,""paragraph"":""9150-GETCARD-BYACCT""}]}"
COCRDSLC:uninvoked_paragraph:1	COCRDSLC	uninvoked_paragraph	SEND-LONG-TEXT	1333	Paragraph SEND-LONG-TEXT has no live inbound PERFORM, THRU, GO TO, or fall-through path from the program's recorded entry surfaces; its logic is dead at paragraph granularity. The dead paragraph still contains SEND_TEXT work at L1334.	SEND-LONG-TEXT @L1333 [primary] | SEND-LONG-TEXT @L1334 [sites:SEND_TEXT] | SEND-LONG-TEXT @L1341 [sites:RETURN]	"{""end_line"":1343,""line"":1333,""note"":""Paragraph SEND-LONG-TEXT has no live inbound PERFORM, THRU, GO TO, or fall-through path from the program's recorded entry surfaces; its logic is dead at paragraph granularity. The dead paragraph still contains SEND_TEXT work at L1334."",""paragraph"":""SEND-LONG-TEXT"",""program"":""COCRDSLC"",""sites"":[{""kind"":""SEND_TEXT"",""line"":1334,""paragraph"":""SEND-LONG-TEXT""},{""kind"":""RETURN"",""line"":1341,""paragraph"":""SEND-LONG-TEXT""}]}"
COPAUA0C:computes_without_rounded:0	COPAUA0C	computes_without_rounded	6000-MAKE-DECISION	916	Decimal target without ROUNDED — implicit truncation per COBOL standard	6000-MAKE-DECISION @L916 [primary]	"{""expression"":""PA-CREDIT-LIMIT - PA-CREDIT-BALANCE"",""line"":916,""note"":""Decimal target without ROUNDED \u2014 implicit truncation per COBOL standard"",""paragraph"":""6000-MAKE-DECISION"",""program"":""COPAUA0C"",""target"":""WS-AVAILABLE-AMT"",""target_pic"":""S9(09)V99 COMP-3.""}"
COPAUA0C:computes_without_rounded:1	COPAUA0C	computes_without_rounded	6000-MAKE-DECISION	924	Decimal target without ROUNDED — implicit truncation per COBOL standard	6000-MAKE-DECISION @L924 [primary]	"{""expression"":""ACCT-CREDIT-LIMIT - ACCT-CURR-BAL"",""line"":924,""note"":""Decimal target without ROUNDED \u2014 implicit truncation per COBOL standard"",""paragraph"":""6000-MAKE-DECISION"",""program"":""COPAUA0C"",""target"":""WS-AVAILABLE-AMT"",""target_pic"":""S9(09)V99 COMP-3.""}"
COPAUS0C:unreachable_after_transfer:0	COPAUS0C	unreachable_after_transfer	RETURN-TO-PREV-SCREEN	1347	Control-flow hazard: statements after PERFORM RETURN-TO-PREV-SCREEN are unreachable because RETURN-TO-PREV-SCREEN terminates via XCTL.	RETURN-TO-PREV-SCREEN @L1347 [primary] | RETURN-TO-PREV-SCREEN @L1357 [sites]	"{""line"":1347,""note"":""Control-flow hazard: statements after PERFORM RETURN-TO-PREV-SCREEN are unreachable because RETURN-TO-PREV-SCREEN terminates via XCTL."",""paragraph"":""RETURN-TO-PREV-SCREEN"",""program"":""COPAUS0C"",""sites"":[{""line"":1357,""paragraph"":""RETURN-TO-PREV-SCREEN""}],""status"":""DETECTED""}"
COTRN02C:computes_without_rounded:0	COTRN02C	computes_without_rounded	VALIDATE-INPUT-DATA-FIELDS	871	Decimal target without ROUNDED — implicit truncation per COBOL standard	VALIDATE-INPUT-DATA-FIELDS @L871 [primary]	"{""expression"":""FUNCTION NUMVAL-C(TRNAMTI OF COTRN2AI)"",""line"":871,""note"":""Decimal target without ROUNDED \u2014 implicit truncation per COBOL standard"",""paragraph"":""VALIDATE-INPUT-DATA-FIELDS"",""program"":""COTRN02C"",""target"":""WS-TRAN-AMT-N"",""target_pic"":""S9(9)V99""}"
COTRN02C:computes_without_rounded:1	COTRN02C	computes_without_rounded	ADD-TRANSACTION	944	Decimal target without ROUNDED — implicit truncation per COBOL standard	ADD-TRANSACTION @L944 [primary]	"{""expression"":""FUNCTION NUMVAL-C(TRNAMTI OF COTRN2AI)"",""line"":944,""note"":""Decimal target without ROUNDED \u2014 implicit truncation per COBOL standard"",""paragraph"":""ADD-TRANSACTION"",""program"":""COTRN02C"",""target"":""WS-TRAN-AMT-N"",""target_pic"":""S9(9)V99""}"
