The CALL Verb CALL Syntax CALL Example CALL

The CALL Verb

CALL Syntax

CALL Example. CALL "Date. Validate" USING BY CONTENT Temp. Date USING BY REFERENCE Date. Check. Result. IDENTIFICATION DIVISION. PROGRAM-ID Date. Validate IS INITIAL. DATA DIVISION. WORKING-STORAGE SECTION. ? ? ? LINKAGE SECTION. 01 Date. Param 01 Date. Result PIC X(8). PIC 9. PROCEDURE DIVISION USING Date. Param, Date. Result. Begin. ? ? ? ? ? ? EXIT PROGRAM. ? ? ? ? ?

CALL Parameters CALL "Program. Name" USING P 1, P 2, P 3, P 4. PROCEDURE DIVISION USING P 2, P 4, P 1, P 3.

CALL Parameters CALL "Program. Name" USING P 1, P 2, P 3, P 4. PROCEDURE DIVISION USING P 2, P 4, P 1, P 3. Positions Correspond - Not Names

Parameter Passing Mechanisms CALL. . BY REFERENCE CALLed Program

Parameter Passing Mechanisms Address of Data Item CALL. . BY REFERENCE Direction of Data Flow CALLed Program

Parameter Passing Mechanisms Address of Data Item CALL. . BY REFERENCE Direction of Data Flow CALL. . BY CONTENT CALLed Program Copy of Data Item

Parameter Passing Mechanisms Address of Data Item CALL. . BY REFERENCE Direction of Data Flow CALL. . BY CONTENT Data Item Copy of Data Item CALLed Program Address of Copy

Avoiding “State Memory” - The IS INITIAL phrase. $ SET SOURCEFORMAT"FREE" IDENTIFICATION DIVISION. PROGRAM-ID. Steadfast IS INITIAL DATA DIVISION. WORKING-STORAGE SECTION. 01 Running. Total PIC 9(7) VALUE 50. LINKAGE SECTION. 01 Param. Value PIC 99. 12 Total = 62 5 Total = 55 12 PROCEDURE DIVISION USING Param. Value. Begin. Total = 62 ADD Param. Value TO Running. Total. DISPLAY "Total = ", Running. Total. EXIT PROGRAM.

Avoiding “State Memory” - The IS INITIAL phrase. $ SET SOURCEFORMAT"FREE" IDENTIFICATION DIVISION. PROGRAM-ID. Fickle. DATA DIVISION. WORKING-STORAGE SECTION. 01 Running. Total PIC 9(7) VALUE 50. LINKAGE SECTION. 01 Param. Value PIC 99. 12 Total = 62 5 Total = 67 PROCEDURE DIVISION USING Param. Value. 12 Begin. Total = 79 ADD Param. Value TO Running. Total. DISPLAY "Total = ", Running. Total. EXIT PROGRAM.

The CANCEL command. CALL "Fickle" USING BY CONTENT Inc. Value. CANCEL "Fickle" CALL "Fickle" USING BY CONTENT Inc. Value. $ SET SOURCEFORMAT"FREE" IDENTIFICATION DIVISION. PROGRAM-ID. Fickle. DATA DIVISION. WORKING-STORAGE SECTION. 01 Running. Total PIC 9(7) VALUE 50. LINKAGE SECTION. 01 Param. Value PIC 99. PROCEDURE DIVISION USING Param. Value. Begin. ADD Param. Value TO Running. Total. DISPLAY "Total = ", Running. Total. EXIT PROGRAM. 12 Total = 62

Contained Sub-Programs $ SET SOURCEFORMAT"FREE" IDENTIFICATION DIVISION. PROGRAM-ID. Main. Program. ? ? ? ? ? 01 Table. Item IS GLOBAL PROCEDURE DIVISION. ? ? ? ? ? CALL Put. To. Table USING BY CONTENT Data. Item ? ? ? ? ? CALL Report. From. Table. EXIT PROGRAM. IDENTIFICATION DIVISION. PROGRAM-ID. Put. To. Table. ? ? ? ? ? END-PROGRAM Put. To. Table. IDENTIFICATION DIVISION. PROGRAM-ID. Report. From. Table. ? ? ? ? ? END-PROGRAM Report. From. Table. END-PROGRAM Main. Program.

Contained Sub-Programs $ SET SOURCEFORMAT"FREE" IDENTIFICATION DIVISION. PROGRAM-ID. Main. Program. ? ? ? ? ? 01 Table. Item IS GLOBAL PROCEDURE DIVISION. ? ? ? ? ? CALL Put. To. Table USING BY CONTENT Data. Item ? ? ? ? ? CALL Report. From. Table. EXIT PROGRAM. IDENTIFICATION DIVISION. PROGRAM-ID. Put. To. Table. ? ? ? ? ? END-PROGRAM Put. To. Table. IDENTIFICATION DIVISION. PROGRAM-ID. Report. From. Table. ? ? ? ? ? END-PROGRAM Report. From. Table. END-PROGRAM Main. Program.

Contained Sub-Programs $ SET SOURCEFORMAT"FREE" IDENTIFICATION DIVISION. PROGRAM-ID. Main. Program. ? ? ? ? ? 01 Table. Item IS GLOBAL PROCEDURE DIVISION. ? ? ? ? ? CALL Put. To. Table USING BY CONTENT Data. Item ? ? ? ? ? CALL Report. From. Table. EXIT PROGRAM. IDENTIFICATION DIVISION. PROGRAM-ID. Put. To. Table. ? ? ? ? ? END-PROGRAM Put. To. Table. IDENTIFICATION DIVISION. PROGRAM-ID. Report. From. Table. ? ? ? ? ? END-PROGRAM Report. From. Table. END-PROGRAM Main. Program.

The COMMON PROGRAM Phrase $ SET SOURCEFORMAT"FREE" IDENTIFICATION DIVISION. PROGRAM-ID. Main. Program. ? ? ? ? ? 01 Table. Item IS GLOBAL PROCEDURE DIVISION. ? ? ? ? ? EXIT PROGRAM. IDENTIFICATION DIVISION. PROGRAM-ID. Put. To. Table. ? ? ? ? ? CALL Report. From. Table. ? ? ? ? ? END-PROGRAM Put. To. Table. IDENTIFICATION DIVISION. PROGRAM-ID. Report. From. Table IS COMMON PROGRAM. ? ? ? ? ? CALL Put. To. Table USING ? ? ? ? END-PROGRAM Report. From. Table. END-PROGRAM Main. Program.

The COMMON PROGRAM Phrase $ SET SOURCEFORMAT"FREE" IDENTIFICATION DIVISION. PROGRAM-ID. Main. Program. ? ? ? ? ? 01 Table. Item IS GLOBAL PROCEDURE DIVISION. ? ? ? ? ? EXIT PROGRAM. IDENTIFICATION DIVISION. PROGRAM-ID. Put. To. Table. ? ? ? ? ? CALL Report. From. Table. ? ? ? ? ? END-PROGRAM Put. To. Table. YES IDENTIFICATION DIVISION. PROGRAM-ID. Report. From. Table IS COMMON PROGRAM. ? ? ? ? ? CALL Put. To. Table USING ? ? ? ? END-PROGRAM Report. From. Table. END-PROGRAM Main. Program.

The COMMON PROGRAM Phrase $ SET SOURCEFORMAT"FREE" IDENTIFICATION DIVISION. PROGRAM-ID. Main. Program. ? ? ? ? ? 01 Table. Item IS GLOBAL PROCEDURE DIVISION. ? ? ? ? ? EXIT PROGRAM. IDENTIFICATION DIVISION. PROGRAM-ID. Put. To. Table. ? ? ? ? ? CALL Report. From. Table. ? ? ? ? ? END-PROGRAM Put. To. Table. NO YES IDENTIFICATION DIVISION. PROGRAM-ID. Report. From. Table IS COMMON PROGRAM. ? ? ? ? ? CALL Put. To. Table USING ? ? ? ? END-PROGRAM Report. From. Table. END-PROGRAM Main. Program.

Creating Abstract Data Types? $ SET SOURCEFORMAT"FREE" IDENTIFICATION DIVISION. PROGRAM-ID. Stack. Main DATA DIVISION. WORKING-STORAGE SECTION. 01 Stack. Holder IS GLOBAL. 02 Stack. Item OCCURS 20 TIMES PIC X(10). PROCEDURE DIVISION USING ? ? . Begin. EVALUATE TRUE WHEN Push. Stack CALL "Push" USING ? ? ? WHEN Pop. Stack CALL "Pop" USING ? ? ? END-EVALUATE. EXIT PROGRAM. IDENTIFICATION DIVISION. PROGRAM-ID. Push. ? ? ? ? ? END-PROGRAM Push. IDENTIFICATION DIVISION. PROGRAM-ID. Pop. ? ? ? ? ? END-PROGRAM Pop. END-PROGRAM Stack Push Pop

Creating Abstract Data Types? $ SET SOURCEFORMAT"FREE" IDENTIFICATION DIVISION. PROGRAM-ID. Stack. Main DATA DIVISION. WORKING-STORAGE SECTION. 01 Stack. Holder IS GLOBAL. 02 Stack. Item OCCURS 20 TIMES PIC X(10). PROCEDURE DIVISION USING ? ? . Begin. EVALUATE TRUE WHEN Push. Stack CALL "Push" USING ? ? ? WHEN Pop. Stack CALL "Pop" USING ? ? ? END-EVALUATE. EXIT PROGRAM. IDENTIFICATION DIVISION. PROGRAM-ID. Push. ? ? ? ? ? END-PROGRAM Push. IDENTIFICATION DIVISION. PROGRAM-ID. Pop. ? ? ? ? ? END-PROGRAM Pop. END-PROGRAM Stack Push Pop

Creating Abstract Data Types? $ SET SOURCEFORMAT"FREE" IDENTIFICATION DIVISION. PROGRAM-ID. Stack. Main DATA DIVISION. WORKING-STORAGE SECTION. 01 Stack. Holder IS GLOBAL. 02 Stack. Item OCCURS 20 TIMES PIC X(10). PROCEDURE DIVISION USING ? ? . Begin. EVALUATE TRUE WHEN Push. Stack CALL "Push" USING ? ? ? WHEN Pop. Stack CALL "Pop" USING ? ? ? END-EVALUATE. EXIT PROGRAM. IDENTIFICATION DIVISION. PROGRAM-ID. Push. ? ? ? ? ? END-PROGRAM Push. IDENTIFICATION DIVISION. PROGRAM-ID. Pop. ? ? ? ? ? END-PROGRAM Pop. END-PROGRAM Stack Push Pop

The IS EXTERNAL phrase. FD Common. File. Area IS EXTERNAL. WORKING-STORAGE SECTION. 01 Shared. Rec IS EXTERNAL. 02 Part. A PIC X(4). 02 Part. B PIC 9(5).

The IS EXTERNAL phrase. Program. A Program. B Program. C 01 Shared. Rec etc Program. D 01 Shared. Rec etc Mike 12345 Shared. Rec WORKING-STORAGE SECTION. 01 Shared. Rec IS EXTERNAL. 02 Part. A PIC X(4). 02 Part. B PIC 9(5).

The IS EXTERNAL phrase. Program. A Program. B Program. C 01 Shared. Rec etc Program. D 01 Shared. Rec etc Mike 12345 PUT Shared. Rec Mike 12345 WORKING-STORAGE SECTION. 01 Shared. Rec IS EXTERNAL. 02 Part. A PIC X(4). 02 Part. B PIC 9(5).

The IS EXTERNAL phrase. Program. A Program. B Program. C 01 Shared. Rec etc Program. D 01 Shared. Rec etc Mike 12345 PUT Shared. Rec Mike 12345 GET WORKING-STORAGE SECTION. 01 Shared. Rec IS EXTERNAL. 02 Part. A PIC X(4). 02 Part. B PIC 9(5).
- Slides: 25