Could you please help me out with this one. What should I change in Program A to make it work with the new programs . I need to call program B to do few calculations (fund accumulation….).
Porgram A calls program B.
In program A, I have :
1/ OPEN INPUT MY-FILE-DATA-FILE + a close statement
2/ A select statement:
SELECT MY-FILE-DATA-FILE ASSIGN TO SYS024-MY-FILE
ORGANIZATION IS INDEXED
ACCESS IS DYNAMIC
RECORD KEY IS MY-FILE-CODE
FILE STATUS IS MY-FILE-DATA-FILE-STATUS.
3/ An FD statement
FD MY-FILE-DATA-FILE
LABEL RECORDS ARE STANDARD.
4/ A record layout
5/ A procedure that reads MY-FILE-DATA-FILE
PERFORM 1000-READ-MY-FILE
THRU 1000-READ-MY-FILE-X.
1000-READ-MY-FILE.
-----------------------------
IF MY-FILE-CODE = WS-PREV-MY-FILE-KEY
GO TO 1000-READ-MY-FILE-X.
READ MY-FILE-DATA-FILE RECORD KEY IS MY-FILE-CODE.
IF MY-FILE-READ-SUCCESSFUL
ADD 1 TO WS-MY-FILE-READ-CTR
MOVE MY-FILE-CODE TO WS-PREV-MY-FILE-KEY
ELSE
MOVE MY-FILE-CODE TO WS-REPORT-KEY
MOVE MY-FILE-DATA-FILE-STATUS TO WS-REPORT-STATUS
MOVE 'ERROR READ MY-FILE' TO WS-MESSAGE
PERFORM PROCEDURE-ERROR.
1000-READ-MY-FILE-X.
EXIT.
Program B has
1/ The same record layout
2/ Uses MY_FILE
DO-WHAT-EVER.
IF I = 0
MOVE BASIC-PLAN-CODE TO MY-FILE-PLAN-KEY
MOVE BASIC-RATE-SCALE TO MY-FILE-RS-KEY
ELSE
MOVE R-PLAN-CODE (I) TO MY-FILE-PLAN-KEY
MOVE R-RATE-SCALE (I) TO MY-FILE-RS-KEY
IF R-PLAN-LAST-3 (I) EQUAL '001' OR '002'
MOVE ORIGINAL-PLAN-CODE (I) TO MY-FILE-PLAN-KEY.
IF MY-FILE-KEY NOT = MY-FILE-CODE
PERFORM MY-FILE-1000-READ
THRU MY-FILE-1000-READ-X
IF NOT WMY-FILE-IO-OK
MOVE 'CC8045' TO WMSGS-MESSAGE-SOURCE
MOVE '0001' TO WMSGS-MESSAGE-NUMBER
MOVE POLICY-NUMBER TO WMSGS-PARM (1)
MOVE MY-FILE-KEY-PLAN-RS TO WMSGS-PARM (2)
PERFORM MSGS-1000-GENERATE-MESSAGE
THRU MSGS-1000-GENERATE-MESSAGE-X.
DO-WHAT-EVER-X.
EXIT.
MY-FILE-1000-READ.
*---------------------------
MOVE TFCMD-READ-RECORD TO MY-FILE-IO-COMMAND.
PERFORM MY-FILE-1000-LINK
THRU MY-FILE-1000-LINK-X.
MY-FILE-1000-READ-X.
EXIT.
Program B calls Program C (Sorry)
Program C includes
1/ A select statement identical to one in program A
2/ Same FD statement
3/ Same record layout
4/ A procedure to read the file
MY-FILE-1000-READ.
*---------------
IF MY-FILE-COMPANY-REQUIRED
DISPLAY 'MY-FILE-COMPANY-REQUIRED '
MOVE WGLOB-COMPANY-CODE TO MY-FILE-KEY-COMPANY
ELSE
MOVE SPACES TO MY-FILE-KEY-COMPANY.
MOVE MY-FILE-KEY TO MY-FILE-CODE.
MOVE 0 TO WMY-FILE-IO-STATUS.
READ MY-FILE-DATA-FILE
INVALID KEY
MOVE 7 TO WMY-FILE-IO-STATUS
GO TO MY-FILE-1000-READ-X.
IF MY-FILE-DATA-FILE-STATUS NOT = ZERO
PERFORM MY-FILE-HANDLE-ERROR
THRU MY-FILE-HANDLE-ERROR-X.
MY-FILE-1000-READ-X.
EXIT.
In case of error , I need the program to perform what is written in program A and not C.
Program C , is a « BATCH I/O ROUTINE FOR MY-FILE »
Porgram A calls program B.
In program A, I have :
1/ OPEN INPUT MY-FILE-DATA-FILE + a close statement
2/ A select statement:
SELECT MY-FILE-DATA-FILE ASSIGN TO SYS024-MY-FILE
ORGANIZATION IS INDEXED
ACCESS IS DYNAMIC
RECORD KEY IS MY-FILE-CODE
FILE STATUS IS MY-FILE-DATA-FILE-STATUS.
3/ An FD statement
FD MY-FILE-DATA-FILE
LABEL RECORDS ARE STANDARD.
4/ A record layout
5/ A procedure that reads MY-FILE-DATA-FILE
PERFORM 1000-READ-MY-FILE
THRU 1000-READ-MY-FILE-X.
1000-READ-MY-FILE.
-----------------------------
IF MY-FILE-CODE = WS-PREV-MY-FILE-KEY
GO TO 1000-READ-MY-FILE-X.
READ MY-FILE-DATA-FILE RECORD KEY IS MY-FILE-CODE.
IF MY-FILE-READ-SUCCESSFUL
ADD 1 TO WS-MY-FILE-READ-CTR
MOVE MY-FILE-CODE TO WS-PREV-MY-FILE-KEY
ELSE
MOVE MY-FILE-CODE TO WS-REPORT-KEY
MOVE MY-FILE-DATA-FILE-STATUS TO WS-REPORT-STATUS
MOVE 'ERROR READ MY-FILE' TO WS-MESSAGE
PERFORM PROCEDURE-ERROR.
1000-READ-MY-FILE-X.
EXIT.
Program B has
1/ The same record layout
2/ Uses MY_FILE
DO-WHAT-EVER.
IF I = 0
MOVE BASIC-PLAN-CODE TO MY-FILE-PLAN-KEY
MOVE BASIC-RATE-SCALE TO MY-FILE-RS-KEY
ELSE
MOVE R-PLAN-CODE (I) TO MY-FILE-PLAN-KEY
MOVE R-RATE-SCALE (I) TO MY-FILE-RS-KEY
IF R-PLAN-LAST-3 (I) EQUAL '001' OR '002'
MOVE ORIGINAL-PLAN-CODE (I) TO MY-FILE-PLAN-KEY.
IF MY-FILE-KEY NOT = MY-FILE-CODE
PERFORM MY-FILE-1000-READ
THRU MY-FILE-1000-READ-X
IF NOT WMY-FILE-IO-OK
MOVE 'CC8045' TO WMSGS-MESSAGE-SOURCE
MOVE '0001' TO WMSGS-MESSAGE-NUMBER
MOVE POLICY-NUMBER TO WMSGS-PARM (1)
MOVE MY-FILE-KEY-PLAN-RS TO WMSGS-PARM (2)
PERFORM MSGS-1000-GENERATE-MESSAGE
THRU MSGS-1000-GENERATE-MESSAGE-X.
DO-WHAT-EVER-X.
EXIT.
MY-FILE-1000-READ.
*---------------------------
MOVE TFCMD-READ-RECORD TO MY-FILE-IO-COMMAND.
PERFORM MY-FILE-1000-LINK
THRU MY-FILE-1000-LINK-X.
MY-FILE-1000-READ-X.
EXIT.
Program B calls Program C (Sorry)
Program C includes
1/ A select statement identical to one in program A
2/ Same FD statement
3/ Same record layout
4/ A procedure to read the file
MY-FILE-1000-READ.
*---------------
IF MY-FILE-COMPANY-REQUIRED
DISPLAY 'MY-FILE-COMPANY-REQUIRED '
MOVE WGLOB-COMPANY-CODE TO MY-FILE-KEY-COMPANY
ELSE
MOVE SPACES TO MY-FILE-KEY-COMPANY.
MOVE MY-FILE-KEY TO MY-FILE-CODE.
MOVE 0 TO WMY-FILE-IO-STATUS.
READ MY-FILE-DATA-FILE
INVALID KEY
MOVE 7 TO WMY-FILE-IO-STATUS
GO TO MY-FILE-1000-READ-X.
IF MY-FILE-DATA-FILE-STATUS NOT = ZERO
PERFORM MY-FILE-HANDLE-ERROR
THRU MY-FILE-HANDLE-ERROR-X.
MY-FILE-1000-READ-X.
EXIT.
In case of error , I need the program to perform what is written in program A and not C.
Program C , is a « BATCH I/O ROUTINE FOR MY-FILE »