RIPPLE-TRAC™ sample session

 

We requested an impact on field ‘VARIABLE-START-POS’. We wish to change the size of this field. As you can see below, this field was found in module ZRULES seven times. Once in WORKING STORAGE (WS) and 6 times in the PROCEDURE DIVISION. (P)

 

MODULE

TYPE

PROJECT

BACKREF

COMPONENT
NAME

COMPONENT

DESCRIPTION  

ZRULES

C

 

 

COPY

XDCOMNC

 

ZRULES

F

 

 

(WS)

VARIABLE-START-POS

OFFSET NUMBER

ZRULES

C

 

 

COPY

XDLMID2C

 

ZRULES

C

 

 

COPY

XDLMIDC2

 

ZRULES

C

 

 

COPY

XS2034W

 

ZRULES

 

 

&XS2034W

..NO COMPONENTS

­

 

ZRULES

C

 

 

COPY

XS3300W

 

ZRULES

 

 

&XS3300W

..NO COMPONENTS

 

 

ZRULES

C

 

 

COPY

XS3300R

 

ZRULES

 

 

&XS3300R

..NO COMPONENTS

 

 

ZRULES

C

 

 

COPY

XSSTATE

 

ZRULES

 

 

&XSSTATE

..NO COMPONENTS

 

 

ZRULES

C

 

 

COPY(P)

XS2034P

 

ZRULES

 

 

&XS2034P

..NO COMPONENTS

 

 

ZRULES

C

 

 

COPY(P)

XS3300P3

 

ZRULES

 

 

&XS3300P3

..STATIC CALL

XD2137

 

ZRULES

F

 

 

(P)

VARIABLE-START-POS

OFFSET NUMBER

ZRULES

F

 

 

(P)

VARIABLE-START-POS

OFFSET NUMBER

ZRULES

F

 

 

(P)

VARIABLE-START-POS

OFFSET NUMBER

ZRULES

F

 

 

(P)

VARIABLE-START-POS

OFFSET NUMBER

ZRULES

F

 

 

(P)

VARIABLE-START-POS

OFFSET NUMBER

ZRULES

F

 

 

(P)

VARIABLE-START-POS

OFFSET NUMBER

ZRULES

 

 

&XS3300P3

..STATIC CALL

XD2137

 

ZRULES

 

 

&XS3300P3

..STATIC CALL

XD2137

 

ZRULES

 

 

&XS3300P3

..STATIC CALL

ILBOABN0

force an abend and obtain a system dump.

 


 

Now we will map ‘VARIABLE-START-POS’ to where it is used in the ZRULES module and extract the business Rule. (Done manually in this release)
The routine that ‘VARIABLE-START-POS’ is used in:

 
7000-020-LOOP-SOURCE.
      * ......setup for space check before and after data....
           MOVE START-POS TO VARIABLE-START-POS.
           SUBTRACT +1 FROM VARIABLE-START-POS.
           COMPUTE VARIABLE-END-POS =
                   VARIABLE-START-POS + LENGTH-OF-LABEL + 1.
           IF SOURCE-DATA(START-POS:LENGTH-OF-LABEL)
             = ARG-LABEL(AT1-SUB), (1:LENGTH-OF-LABEL)
             AND SOURCE-DATA(VARIABLE-START-POS:1) = '.'
             MOVE SPACE TO SOURCE-DATA(VARIABLE-START-POS:1)
           END-IF
           IF SOURCE-DATA(START-POS:LENGTH-OF-LABEL)
             = ARG-LABEL(AT1-SUB), (1:LENGTH-OF-LABEL)
             AND SOURCE-DATA(VARIABLE-START-POS:1) = SPACES
             AND SOURCE-DATA(VARIABLE-END-POS:1)   = SPACES
             MOVE SOURCE-NAME TO IMP-MODULE-NAME
             MOVE SOURCE-DATA(START-POS:LENGTH-OF-LABEL)
               TO IMP-MODULE-COMP, GENERIC-DESC-HOLD-AREA
             MOVE ARG-PROJECT(AT1-SUB) TO IMP-MODULE-PROJECT
             MOVE ARG-TYPE(AT1-SUB) TO IMP-MODULE-TYPE
             PERFORM  VARYING TT-SUB FROM +1 BY +1
                   UNTIL TT-SUB > GENERIC-DESC-VIRTUAL-AT-END
                IF GENERIC-DESC-NAME(TT-SUB)
                                  = GENERIC-DESC-HOLD-AREA
                  MOVE GENERIC-DESC-DESC(TT-SUB)
                    TO IMP-MODULE-COMP-DESC
                  PERFORM 7000-030-CHECK-ON-MODEL
                     THRU 7000-030-EXIT
                END-IF
             END-PERFORM
             PERFORM 9000-EDIT-IMP THRU 9000-EXIT
             ADD +1 TO HIT-COUNT
             WRITE IMP-RECORD
             MOVE SPACES TO IMP-RECORD
             ADD +1 TO START-POS
      *      MOVE 'F' TO FOUND-SW
      *      MOVE +72 TO START-POS
           ELSE
             ADD +1 TO START-POS.
       7000-020-EXIT. EXIT.
 
 

 

Return to Mainframes: Analyzing IBM legacy systems