Change in COBOL PIC clause for repeating groups

book

Article ID: 205884

calendar_today

Updated On:

Products

CA Gen CA Gen - Workstation Toolset

Issue/Introduction

An action block created many years ago with an Export repeating group in it is defined as having 10000 records.  In previous versions of CA Gen, the generated COBOL programs had the array subscript variable defined as PIC 9(4) making the actual max array size to be no more than 9999 which was fine.   With CA Gen 8.6, this has changed and the generated subscript variable is now defined as PIC 9(8) for repeating groups with more than 9999 occurrences.  That's fine for all new code, but for newly generated action blocks that call older action blocks, this causes a SOC7 runtime error coming back from the called action block because of the difference in PIC clauses:  

The COBOL source code for data fields involved in the failure:                     

  000327                07  YEXPORT-GROUP-PRED-SUCC-0001MA  PIC S9(8) VALUE       

  000328                    00000000.                                             

Data field values at time of abend:                                               

  YEXPORT-GROUP-PRED-SUCC-0001MA = X'F0F0F0C140404040' *** Invalid numeric data ***

 

Is there a way to cause the generator to generate with the PIC 9(4) definition now rather than the PIC 9(8) one?   

Environment

Release : 8.6

Component : CA Gen Build Tool

Resolution

Based on the situation, the only safe recommendation is to regenerate the older action block. Since the cardinality of the group view for the older action block is greater than 9999 (10,000), it can only be matched to calling action blocks with the same view size. The newer action blocks will only generate a PIC(9). To generate a PIC(4) would require a smaller cardinality and cause a mismatch and a consistency check error.

The change was deliberately made to fully support Repeating Group views greater than 9999 in cardinality.