1 / 34

Using The COPY, CALL, STRING , UNSTRING STATEMENTS

Chapter 16. Using The COPY, CALL, STRING , UNSTRING STATEMENTS. Chapter Objectives. To familiarize you with COPY statement for copying parts of a program stored in a library CALL statement for executing called programs as subroutines Text manipulation with STRING and UNSTRING statements.

Download Presentation

Using The COPY, CALL, STRING , UNSTRING STATEMENTS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 16 Using The COPY, CALL, STRING , UNSTRINGSTATEMENTS

  2. Chapter Objectives • To familiarize you with • COPY statement for copying parts of a program stored in a library • CALL statement for executing called programs as subroutines • Text manipulation with STRING and UNSTRING statements

  3. COPY Statement • To copy prewritten COBOL entries stored in a library into a program • Often used to copy • FD, 01 entries that define and describe files and records • Tables • SCREEN SECTIONs • Standard modules used in PROCEDURE DIVISION • Like the #include in C++

  4. COPY Statement Format COPY test-name OF library-name. IN • Use in ENVIRONMENT, DATA, or PROCEDURE DIVISION • Library-name is external-name, 1 to 8 characters, letters and digits only • We’ll have to check to see how to create library on the alpha • Can be used to replace with other text also using the REPLACE keyword.

  5. COPY Statement Example • Suppose file called Customer, stored in library contains following entries: 01 Customer-Rec. 05 Cust-No Pic X(5). 05 Cust-Name Pic X(20). 05 Cust-Address Pic X(30). 05 Cust-Bal-Due Pic 9(4)V99.

  6. COPY Statement Example • Code COPY statement at point in program where entries should appear Data Division. File Section. FD CustFile. Copy Customer. • In source listing, copied lines are marked with a C or other designator

  7. Source Listing with COPY … ... 11 FD CustFile. 12 Copy Customer. 13C 01 Customer-Rec. 14C 05 Cust-No Pic X(5). 15C 05 Cust-Name Pic X(20). 16C 05 Cust-Address Pic X(30). 17C 05 Cust-Bal-Due Pic 9(4)V99. Line numbers followed by C are copied statements

  8. CALL Statement • Used in PROCEDURE DIVISION to CALL or reference independent subprograms stored in library • Calling program - main program that calls or references subprogram • Called program - subprogram stored in separate file that is linked and executed within main program

  9. Called Program (Subprogram) • Compiled, debugged, stored in library to be called when needed • Typical subprograms include: • Edit routines • Error control checks • Standard calculations • Summary, total printing

  10. CALL Statement Format CALL literal-1 [USING identifier-1 …] • To call subprogram into main program • literal-1 is PROGRAM-ID name in called program • Enclose in quotes

  11. Calling and Called Programs Identification Division. ... Procedure Division. ... Call 'Sub1' ... Call 'Sub2' ... Identification Division. Program-ID. Sub1. … Procedure Division. Exit Program. 1 2 Identification Division. Program-ID. Sub2. … Procedure Division. Exit Program. 3 4

  12. CALL … USING • USING clause required if data passed between calling and called program • Parameter passed in several ways: • Value of parameter may be passed to and used by subprogram but not changed • Value for parameter may be calculated by instructions in subprogram and passed back to main program

  13. CALL … USING Example • Suppose a main program • Reads in employee records • Produces report showing employee salary, Social Security tax and Medicaid tax (taxes referred to as FICA taxes) • Subprogram is to calculate amount of each tax based on the salary field • Assume PROGRAM-ID is FICAProg

  14. CALL … USING Example • Parameters needed • Salary (WS-Ann-Sal) • Passed to subprogram, used to calculate taxes but not changed by subprogram • Tax fields Soc-Sec and Med-Tax • Subprogram calculates values for these parameters and passes them back to main program

  15. Calling Program Requirements • CALL statement with: • Literal same as PROGRAM-ID of called program • List of parameters in USING clause Call 'FICAProg' Using WS-Ann-Sal, Soc-Sec, Med-Tax Example

  16. Called Program Requirements • PROGRAM-ID identifier is literal used in CALL in main program • LINKAGE SECTION must be defined in DATA DIVISION • Follows FILE and WORKING-STORAGE SECTIONs • Describes all items passed between main and subprogram • Format same as WORKING-STORAGE

  17. Called Program Requirements • PROCEDURE DIVISION header must include USING clause • Lists all parameters or fields defined in LINKAGE SECTION • EXIT PROGRAM • Last executed statement in called program • Returns control back to calling program

  18. Subprogram Example Identification Division. Program-ID. FICAProg. Data Division. Linkage Section. 01 WS-Ann-Sal Pic 9(6). 01 Soc-Sec Pic 9(4)V99. 01 Med-Tax Pic 9(5)V99.

  19. Subprogram - Procedure Division Procedure Division Using WS-Ann-Sal, Soc-Sec, Med-Tax. If WS-Ann-Sal <= 84900 Compute Soc-Sec = .062 * WS-Ann-Sal Else Compute Soc-Sec = .062 * 84900 End-If Compute Med-Tax = .0145 * WS-Ann-Sal Exit Program.

  20. Subprogram Example • When FICAProg is called • Value of WS-Ann-Sal passed to subprogram • Value of Soc-Sec and Med-Tax undefined • When FICAProg finished • Values calculated for Soc-Sec and Med-Tax passed back to main program

  21. Parameter Correspondence • Parameters passed in sequence • First parameter in CALL … USING passed to first parameter in PROCEDURE DIVISION USING clause and so on • Number of parameters in both USING clause should be the same • PIC clauses for corresponding parameters must be same • Same as you are used to in other languages

  22. STRING Statement • To combine or concatenate several fields into one • Consider following entries: 05 Name. 10 Last-Name Pic X(10). 10 First-Name Pic X(10). 10 Middle-Name Pic X(6).

  23. STRING Statement • Suppose name fields have values below • Print name with single blank between parts: THOMAS ALVA EDISON

  24. STRING Statement Format STRING identifier-1 ... literal-1 identifier-2 DELIMITED BY literal-2 ... SIZE INTO identifier-3 [END-STRING]

  25. STRING Statement • identifier-1 or literal-1 is field or value to be combined • identifier-3 is field in which all identifiers or literals are combined • DELIMITED BY clause • Transmitting of characters ends when value of identifier-2 or literal-2 encountered • SIZE means entire contents to be copied

  26. STRING Example String First-Name Delimited By ' ' Middle-Name Delimited By ' ' Last-Name Delimited By ' ' Into Name-Out • Copies characters from named fields to Name-Out up to first blank in field • Name-Out is THOMASALVAEDISON

  27. STRING Example • To insert a blank between parts of name String First-Name Delimited By ' ' ' ' Delimited By Size Middle-Name Delimited By ' ' ' ' Delimited By Size Last-Name Delimited By ' ' Into Name-Out Places blank after each field

  28. OVERFLOW Option • Specifies operation(s) to be performed if receiving field not large enough to accommodate result • NOT ON OVERFLOW option may also be used • END-STRING scope terminator also available

  29. POINTER Option • To count number of characters moved in STRING statement • Increments specified field by one for every character moved • If you need to know how may characters were concatenated • Tells you where you are now pointing within the string

  30. POINTER Option Example Move 1 To WS-Count String First-Name Delimited By ' ' Into Name-Out With Pointer WS-Count • If First-Name is 'Paul', WS-Count is five after STRING • Subtract one from WS-Count to get length of actual move (4)

  31. POINTER Option • Also used to move data to receiving field beginning at some point other than first position • If WS-Count initialized to 15 before STRING, First-Name moved to Name-Out beginning with fifteenth position of Name-Out

  32. UNSTRING Statement • To separate a field into its components • Suppose Name-In equals TAFT, WILLIAM, H • The last name, first name and middle initial can be stored in separate fields without commas with the following UNSTRING statement

  33. UNSTRING Example Unstring Name-In Delimited By ',' Into Last-Name First-Name Middle-Initial • TAFT will be stored in Last-Name, William in First-Name and H in Middle-Initial

  34. UNSTRING Statement • Sending field, as well as literal, must be nonnumeric • Receiving fields may be numeric or nonnumeric • ALL phrase means one or more occurrences of literal or identifier treated as one • POINTER and OVERFLOW clauses may also be used

More Related