CALL statement USING logical-file-name

This is a Mainframe COBOL forum - you can post your queries on Mainframe COBOL, VS COBOL II, COBOL/370 , Enterprise COBOL

Moderators: dbzTHEdinosauer, Moderator Group

Post Reply
kiranp78
Member
Posts: 5
Joined: Thu Apr 10, 2014 4:31 pm

CALL statement USING logical-file-name

Post by kiranp78 » Thu Oct 01, 2015 12:37 pm

In few of our COBOL programs I see that they are CALLing another program with a logical file name in the USING clause. And the called program has defined the Procedure division USING linkage-storage-variable defined as X(133). refer the sample code provided below.

-----------------------------------------------------------------------------
ProgramA
...
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT INP-FILE ASSIGNED TO INPFILE.
...
DATA DIVISION.
FILE SECTION.
FD INP-FILE.
01 INP-REC PIC X(236).
...
PROCEDURE DIVISION.
...
CALL 'SOMEPGM' USING INP-FILE.

-----------------------------------------------------------------------------
ProgramB
...
DATA DIVISION.
LINKAGE SECTION.
01 WS-LEN PIC S9(04) COMP.
01 WS-INP-FILE PIC X(133).
01 WS-CODE PIC X(01).
...
PROCEDURE DIVISION.
...
ENTRY 'SOMEPGM' USING WS-INP-FILE
WS-CODE.
-----------------------------------------------------------------------------
The variable WS-INP-FILE is never used in the ProgramB after the ENTRY USING statement.

I have never used such CALLs with logical file name and I tried to look at IBM manuals and it just says that the data control block will be passed to the called program. I am trying to understand what exactly is being passed to the "Called" program and how it works? Can anybody who have used such technique can explain, please?

William Collins
Active Member
Posts: 732
Joined: Thu May 24, 2012 4:07 am

Post by William Collins » Thu Oct 01, 2015 3:02 pm

As the documentation has told you, it is the Data Control Block (DCB).

The two programs you show do not match up. You would get a S0C4 in the CALLed program.

The PIC X(133) is garbage, indicating that whoever coded and used it didn't really know what they were doing.

I'd advise against attempting to use it for anything. It is not portable to other COBOL compilers (it is an IBM Extension to the language) and an absolute need for it for a business purpose would be incredibly rate.

If you are just interested, do some search-engineing for IBM Data Control Block layout, there are different ones depending on access method - QSAM for a plain sequential file.
Last edited by William Collins on Thu Oct 01, 2015 4:05 pm, edited 1 time in total.

kiranp78
Member
Posts: 5
Joined: Thu Apr 10, 2014 4:31 pm

Post by kiranp78 » Thu Oct 01, 2015 3:48 pm

[quote="William Collins"] The two programs you show do not match up. You would get a S0C4 in the CALLed program. [/quote]

Sorry I did not get exactly why do you say they do not match up. I can not paste the exact code snippet from the programs, so I have extracted lines from the programs pasted here.

[quote="William Collins"] The PIC X(133) is garbage, indicating that whoever coded and used it didn't really know what they were doing.

I'd advise against attempting to use it for anything. It is not portable to other COBOL compilers (it is an IBM Extension to the language) and an absolute need for it for a business purpose would be incredibly rate.[/quote]

Exactly, I am planning to use a different COBOL compiler (migrating from IBM COBOL to Unix based COBOL compilers, which does not support it).

[quote="William Collins"] If you are just interested, do some search-engineing for IBM Datac Control Block layout, there are different ones depending on access method - QSAM for a plain sequential file.[/quote]

Thanks for the pointer.[/quote]

William Collins
Active Member
Posts: 732
Joined: Thu May 24, 2012 4:07 am

Post by William Collins » Thu Oct 01, 2015 5:15 pm

Code: Select all

CALL 'SOMEPGM' USING INP-FILE. 

Code: Select all

ENTRY 'SOMEPGM' USING WS-INP-FILE
WS-CODE.
The parameters don't match in number, and they should.

kiranp78
Member
Posts: 5
Joined: Thu Apr 10, 2014 4:31 pm

Post by kiranp78 » Thu Oct 01, 2015 6:17 pm

[quote="William Collins"][code]CALL 'SOMEPGM' USING INP-FILE. [/code]

[code]ENTRY 'SOMEPGM' USING WS-INP-FILE
WS-CODE.[/code]

The parameters don't match in number, and they should.[/quote]

Oops.. Did not notice that, yes. They are actually matching in the Called and Caller programs.

Post Reply

FREE TUTORIALS

Tutorials
Free tutorials from mainframegurukul
  • JCL Tutorial
    Covers all important JCL concepts.
  • Cobol Tutorial
    This tutorials covers all Cobol Topics from STRING to COMP-3.
  • DB2 Tutorial
    DB2 Tutorial focuses on DB2 COBOL Programming.
  • SORT Tutorial
    This Tutorial covers all important aspects of DFSORT with examples
  • CICS Tutorial
    This CICS tutorial covers CICS concepts and CICS Basics, CICS COBOL Programming.
Interview
Mainframe Interview questions



Other References
Mainframe Tools and others