Adding test data to an array

You can specify input or expected out data for array items in the Test Case Editor. ZUnit generates statements in the test program only for the array items that contain data.

Example

The following code sample defines an array of values for the parameter I-ITEM03:
       01 LOGICALPARAMS.
           03 I-ITEM01     PIC X(20).
           03 R-ITEM01     REDEFINES I-ITEM01 PIC 9(20) .
           03 I-ITEM02     PIC X(20).
           03 R-ITEM02     REDEFINES I-ITEM02 OCCURS 20  PIC X(1) .
           03 I-ITEM03     OCCURS 25 PIC X(2).
This screen capture shows how this array is displayed in the Test Case Editor:
Sample array in the Test Case Editor
You can enter input data for array items:
Sample array data in the Test Case Editor
ZUnit generates the following statements in the SETUP subroutine of the test program. In the WORKING-STORAGE section of this subroutine, the data values are assigned to the variables ZUT00000000 through ZUT00000005. No variables are defined for array items that have no input data. In the PROCEDURE division, the variable values are supplied to the I-ITEM03 parameter.
       IDENTIFICATION DIVISION.
       PROGRAM-ID. 'SETUP'.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       1 CEEGTST-SIZE PIC S9(9) COMP-5.
       1 CEEGTST-HEAP PIC S9(9) COMP-5.
       1 PARM-SIZE    PIC S9(9) COMP-5.
       1 CURRENT-TEST-FIXTURE-PTR POINTER.
       1 CURRENT-TEST-FIXTURE-PTR-VALUE REDEFINES
           CURRENT-TEST-FIXTURE-PTR PIC S9(9) COMP-5.
       1 NEXT-TEST-FIXTURE-PTR POINTER.
       1 NEXT-TEST-FIXTURE-PTR-VALUE REDEFINES
           NEXT-TEST-FIXTURE-PTR  PIC S9(9) COMP-5.
       1 FAIL-MESSAGE-TXT PIC X(254).
       1 FAIL-MESSAGE-LEN PIC S9(9) COMP-5.
       1 AZ-TEST-INPUT-DATA-VALUE.
          3 ZUT00000000.
            5 PIC X(1) DISPLAY VALUE '1'.
            5 PIC X(1) DISPLAY VALUE SPACES.
          3 ZUT00000001.
            5 PIC X(1) DISPLAY VALUE '2'.
            5 PIC X(1) DISPLAY VALUE SPACES.
          3 ZUT00000002.
            5 PIC X(1) DISPLAY VALUE '3'.
            5 PIC X(1) DISPLAY VALUE SPACES.
          3 ZUT00000003.
            5 PIC X(1) DISPLAY VALUE '4'.
            5 PIC X(1) DISPLAY VALUE SPACES.
          3 ZUT00000004.
            5 PIC X(1) DISPLAY VALUE '5'.
            5 PIC X(1) DISPLAY VALUE SPACES.
          3 ZUT00000005.
            5 PIC X(1) DISPLAY VALUE '6'.
            5 PIC X(1) DISPLAY VALUE SPACES.
       1 AZ-TEST-NAME-FOR-SUB   PIC X(254) EXTERNAL.
       1 AZ-TEST-NAME-LEN  PIC S9(9) COMP-5 EXTERNAL.
       1 AZ-TEST-CASE-PTR  POINTER EXTERNAL.
       1 AZ-TEST-CASE-PTR-VALUE REDEFINES
           AZ-TEST-CASE-PTR  PIC 9(9) COMP-5.
       LINKAGE SECTION.
       1 LOGICALPARAMS.
         3 I-ITEM01 PIC X(20).
         3 R-ITEM01 REDEFINES I-ITEM01 PIC 9(20).
         3 I-ITEM02 PIC X(20).
         3 R-ITEM02 REDEFINES I-ITEM02 OCCURS 20 PIC X(1).
         3 I-ITEM03 OCCURS 25 PIC X(2).
       1 TEST-CASE-PTR    POINTER.
       1 TEST-CASE-PTR-VALUE REDEFINES
           TEST-CASE-PTR  PIC 9(9) COMP-5.
       1 TEST-FIXTURE-PTR POINTER.
       1 TEST-NAME-PTR    POINTER.
       1 TEST-NAME-LEN    PIC S9(9) COMP-5.
       1 TEST-NAME        PIC X(254).
       PROCEDURE DIVISION USING BY VALUE TEST-CASE-PTR
                          BY REFERENCE TEST-FIXTURE-PTR
                          BY VALUE TEST-NAME-PTR
                          BY VALUE TEST-NAME-LEN.
           SET ADDRESS OF TEST-NAME TO TEST-NAME-PTR
           MOVE TEST-NAME(1:TEST-NAME-LEN) TO
              AZ-TEST-NAME-FOR-SUB(1:TEST-NAME-LEN)
           MOVE TEST-NAME-LEN TO AZ-TEST-NAME-LEN
           EVALUATE TEST-NAME(1:TEST-NAME-LEN)
              WHEN 'ENTRY1'
                DISPLAY 'SETUP (' TEST-NAME(1:TEST-NAME-LEN) ')'
      *       setup for test ENTRY1
                PERFORM ALLOCATE-PARM
                MOVE ZUT00000000 TO I-ITEM03 OF LOGICALPARAMS (1)
                MOVE ZUT00000001 TO I-ITEM03 OF LOGICALPARAMS (2)
                MOVE ZUT00000002 TO I-ITEM03 OF LOGICALPARAMS (3)
                MOVE ZUT00000003 TO I-ITEM03 OF LOGICALPARAMS (4)
                MOVE ZUT00000004 TO I-ITEM03 OF LOGICALPARAMS (6)
                MOVE ZUT00000005 TO I-ITEM03 OF LOGICALPARAMS (8)
                MOVE TEST-CASE-PTR-VALUE TO AZ-TEST-CASE-PTR-VALUE
           END-EVALUATE
           GOBACK
           .
        ALLOCATE-PARM.
      *    allocate an instance of parameter structure
           INITIALIZE CEEGTST-HEAP CEEGTST-SIZE
      *    get a parameter size
           INITIALIZE PARM-SIZE
      *    LENGTH OF LOGICALPARAMS: 90
           IF 90 > PARM-SIZE
             MOVE 90 TO PARM-SIZE
           ADD PARM-SIZE TO CEEGTST-SIZE
      *    get heap storage
           CALL 'CEEGTST' USING CEEGTST-HEAP CEEGTST-SIZE
                TEST-FIXTURE-PTR OMITTED
           SET NEXT-TEST-FIXTURE-PTR TO TEST-FIXTURE-PTR
      *    set address of a parameter
           SET ADDRESS OF LOGICALPARAMS TO NEXT-TEST-FIXTURE-PTR
           .
       END PROGRAM 'SETUP'.