Discussion:
How to call VS COBOL II RES program from COBOL V5.2-enabled assembler?
Add Reply
Farley, Peter x23353
2017-05-30 23:41:03 UTC
Reply
Permalink
Raw Message
The COBOL V5.2 Migration Guide (GC14-7383-03) says:

"Enterprise COBOL V5 programs can dynamically call (and be dynamically called by) VS COBOL II RES programs."

If I have an existing assembler program which calls a VS COBOL II RES program after calling the older COBOL environment setup program IGZERRE, how can I now call the existing VS COBOL II RES program using the CEEPIPI technique mandated for COBOL V5.2 subroutines?

In other words, if COBOL V5.2 can call a VS COBOL II RES program, how do I now do this myself from assembler when I may also be calling COBOL V5.2 subroutines which require the use of CEEPIPI to make a call?

The problem is that the CEEPIPI (add_sub) function call returns error RC=20 (not an LE program) for VS COBOL II RES programs I have tested so far, so I do not see any way to use CEEPIPI to call such routines.

Currently in my assembler code I found that I can identify VS COBOL II RES programs (after a LOAD) by the compiler ID string "C2 1.3.1" at zero-relative offset decimal 14 (1-relative byte position 15) in the generated object code. The compiler listing header for such programs is:

PP 5668-958 IBM VS COBOL II Release 3.1 09/19/89

Is this COBOL version too old to be LE-compatible, even when programs were compiled with the RESident option?

Peter
--


This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Lizette Koehler
2017-05-31 00:29:11 UTC
Reply
Permalink
Raw Message
Could you explain a little more of the calling order? When you quote from the eCOBOL V5.3 manual, I tend to get confused as to what you are trying to do.


Assm --> VS COBOL II

eCOBOL V5.3 --> Assm --> VS Cobol II


VS Cobol should run as the SCEERU N libraries will contain the required modules. I am not sure why this may not work.

Lizette


-----Original Message-----
Sent: May 30, 2017 4:41 PM
Subject: How to call VS COBOL II RES program from COBOL V5.2-enabled assembler?
"Enterprise COBOL V5 programs can dynamically call (and be dynamically called by) VS COBOL II RES programs."
If I have an existing assembler program which calls a VS COBOL II RES program after calling the older COBOL environment setup program IGZERRE, how can I now call the existing VS COBOL II RES program using the CEEPIPI technique mandated for COBOL V5.2 subroutines?
In other words, if COBOL V5.2 can call a VS COBOL II RES program, how do I now do this myself from assembler when I may also be calling COBOL V5.2 subroutines which require the use of CEEPIPI to make a call?
The problem is that the CEEPIPI (add_sub) function call returns error RC=20 (not an LE program) for VS COBOL II RES programs I have tested so far, so I do not see any way to use CEEPIPI to call such routines.
PP 5668-958 IBM VS COBOL II Release 3.1 09/19/89
Is this COBOL version too old to be LE-compatible, even when programs were compiled with the RESident option?
Peter
--
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Farley, Peter x23353
2017-05-31 00:43:34 UTC
Reply
Permalink
Raw Message
EXEC PGM=ASM1 (LOAD and CALL)--> VSCOB2RES
Also: ASM1 (LOAD and CALL via CEEPIPI)--> eCOBOL52

Two different CALL's in one top-level assembler program to COBOL programs compiled with different COBOL compilers. Either or both COBOL programs may be called multiple times in one execution of ASM1.

My question was prompted by the eCOBOL V5.2 migration statement that COBOL V5.2 programs can call and be called by VS COBOL II RES programs. I cannot use CEEPIPI to CALL the VS COBOL II RES program because CEEPIPI returns RC=20 when you try to add it to the CEEPIPI table.

I can call the VS COBOL II RES program multiple times if I first LOAD and call IGZERRE once (the LE version from CEE.SCEERUN), but using IGZERRE and CEEPIPI together is not allowed either according to the migration guide (cannot establish 2 different COBOL environments at the same time in the same LE enclave, which makes sense to me).

If eCOBOL V5.2 can call and be called by VS COBOL II RES programs, how does it do that, and how can I do the same thing?

Peter

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Lizette Koehler
Sent: Tuesday, May 30, 2017 8:30 PM
To: IBM-***@LISTSERV.UA.EDU
Subject: Re: How to call VS COBOL II RES program from COBOL V5.2-enabled assembler?

Could you explain a little more of the calling order? When you quote from the eCOBOL V5.3 manual, I tend to get confused as to what you are trying to do.


Assm --> VS COBOL II

eCOBOL V5.3 --> Assm --> VS Cobol II


VS Cobol should run as the SCEERU N libraries will contain the required modules. I am not sure why this may not work.

Lizette


-----Original Message-----
Sent: May 30, 2017 4:41 PM
Subject: How to call VS COBOL II RES program from COBOL V5.2-enabled assembler?
"Enterprise COBOL V5 programs can dynamically call (and be dynamically called by) VS COBOL II RES programs."
If I have an existing assembler program which calls a VS COBOL II RES program after calling the older COBOL environment setup program IGZERRE, how can I now call the existing VS COBOL II RES program using the CEEPIPI technique mandated for COBOL V5.2 subroutines?
In other words, if COBOL V5.2 can call a VS COBOL II RES program, how do I now do this myself from assembler when I may also be calling COBOL V5.2 subroutines which require the use of CEEPIPI to make a call?
The problem is that the CEEPIPI (add_sub) function call returns error RC=20 (not an LE program) for VS COBOL II RES programs I have tested so far, so I do not see any way to use CEEPIPI to call such routines.
PP 5668-958 IBM VS COBOL II Release 3.1 09/19/89
Is this COBOL version too old to be LE-compatible, even when programs were compiled with the RESident option?
Peter
--

This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system.


----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Farley, Peter x23353
2017-06-06 17:18:18 UTC
Reply
Permalink
Raw Message
Can anyone on the list answer my questions? If not I will have to open a ticket with IBM, and that takes time. I would really appreciate any answers you can provide sooner than I can get answers from IBM.

If anyone is in contact with Tom Ross at IBM, please ask him to chime in here.

Peter

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Farley, Peter x23353
Sent: Tuesday, May 30, 2017 8:44 PM
To: IBM-***@LISTSERV.UA.EDU
Subject: Re: How to call VS COBOL II RES program from COBOL V5.2-enabled assembler?

EXEC PGM=ASM1 (LOAD and CALL)--> VSCOB2RES
Also: ASM1 (LOAD and CALL via CEEPIPI)--> eCOBOL52

Two different CALL's in one top-level assembler program to COBOL programs compiled with different COBOL compilers. Either or both COBOL programs may be called multiple times in one execution of ASM1.

My question was prompted by the eCOBOL V5.2 migration statement that COBOL V5.2 programs can call and be called by VS COBOL II RES programs. I cannot use CEEPIPI to CALL the VS COBOL II RES program because CEEPIPI returns RC=20 when you try to add it to the CEEPIPI table.

I can call the VS COBOL II RES program multiple times if I first LOAD and call IGZERRE once (the LE version from CEE.SCEERUN), but using IGZERRE and CEEPIPI together is not allowed either according to the migration guide (cannot establish 2 different COBOL environments at the same time in the same LE enclave, which makes sense to me).

If eCOBOL V5.2 can call and be called by VS COBOL II RES programs, how does it do that, and how can I do the same thing?

Peter

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Lizette Koehler
Sent: Tuesday, May 30, 2017 8:30 PM
To: IBM-***@LISTSERV.UA.EDU
Subject: Re: How to call VS COBOL II RES program from COBOL V5.2-enabled assembler?

Could you explain a little more of the calling order? When you quote from the eCOBOL V5.3 manual, I tend to get confused as to what you are trying to do.


Assm --> VS COBOL II

eCOBOL V5.3 --> Assm --> VS Cobol II


VS Cobol should run as the SCEERU N libraries will contain the required modules. I am not sure why this may not work.

Lizette


-----Original Message-----
Sent: May 30, 2017 4:41 PM
Subject: How to call VS COBOL II RES program from COBOL V5.2-enabled assembler?
"Enterprise COBOL V5 programs can dynamically call (and be dynamically called by) VS COBOL II RES programs."
If I have an existing assembler program which calls a VS COBOL II RES program after calling the older COBOL environment setup program IGZERRE, how can I now call the existing VS COBOL II RES program using the CEEPIPI technique mandated for COBOL V5.2 subroutines?
In other words, if COBOL V5.2 can call a VS COBOL II RES program, how do I now do this myself from assembler when I may also be calling COBOL V5.2 subroutines which require the use of CEEPIPI to make a call?
The problem is that the CEEPIPI (add_sub) function call returns error RC=20 (not an LE program) for VS COBOL II RES programs I have tested so far, so I do not see any way to use CEEPIPI to call such routines.
PP 5668-958 IBM VS COBOL II Release 3.1 09/19/89
Is this COBOL version too old to be LE-compatible, even when programs were compiled with the RESident option?
Peter
--

This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system.


----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Tony Harminc
2017-06-06 23:24:15 UTC
Reply
Permalink
Raw Message
On 30 May 2017 at 20:44, Farley, Peter x23353
Post by Farley, Peter x23353
I can call the VS COBOL II RES program multiple times if I first LOAD and call IGZERRE once (the LE version from CEE.SCEERUN), but
using IGZERRE and CEEPIPI together is not allowed either according to the migration guide (cannot establish 2 different COBOL
environments at the same time in the same LE enclave, which makes sense to me).
I'm unclear - are these old and new programs COBOL *main* programs or
subroutines? They sound like main programs, but...

I'm speculating here - never tried it, but if you are desperate... If
you use CEEPIPI init_main_dp for the new COBOL environment, will it
complain that there is already an active LE environment? What if you
call CEEPIPI init_main_dp first, and then IGZERRE? In other words how
does LE know (and why does it care in the PIPI case) that you have
another environment active?

Tony H.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Farley, Peter x23353
2017-06-07 13:10:55 UTC
Reply
Permalink
Raw Message
Thanks for the idea of trying init_main_dp and IGZERRE together, I will try that and see if it flies.

These are non-LE-enabled assembler main programs (and some E15/E35 exits) calling VS COBOL II subroutines. Some of those COBOL subroutines can and will be recompiled to eCOBOL 4.2 first and later eCOBOL 5.2, but some cannot be recompiled so easily due to their widespread use elsewhere in the shop and the resource constraints on getting all using applications to test in one or even multiple QA cycles.

Peter

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Tony Harminc
Sent: Tuesday, June 06, 2017 7:25 PM
To: IBM-***@LISTSERV.UA.EDU
Subject: Re: How to call VS COBOL II RES program from COBOL V5.2-enabled assembler?
Post by Farley, Peter x23353
I can call the VS COBOL II RES program multiple times if I first LOAD
and call IGZERRE once (the LE version from CEE.SCEERUN), but using
IGZERRE and CEEPIPI together is not allowed either according to the migration guide (cannot establish 2 different COBOL environments at the same time in the same LE enclave, which makes sense to me).
I'm unclear - are these old and new programs COBOL *main* programs or subroutines? They sound like main programs, but...

I'm speculating here - never tried it, but if you are desperate... If you use CEEPIPI init_main_dp for the new COBOL environment, will it complain that there is already an active LE environment? What if you call CEEPIPI init_main_dp first, and then IGZERRE? In other words how does LE know (and why does it care in the PIPI case) that you have another environment active?

Tony H.
--

This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system.


----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Farley, Peter x23353
2017-06-08 16:40:36 UTC
Reply
Permalink
Raw Message
Using the (init _subr_dp) call to CEEPIPI instead of the (init_subr) call that I originally used seems to have done the trick. In my assembler main test program I can now call an eCOBOL V4.1 subprogram using CEEPIPI and a VS COBOL II subprogram using a simple CALL after a one-time call to IGZERRE. Multiple calls to both types of COBOL subprograms do not fail.

I still have to test with an eCOBOL V5.2 subprogram in the mix, but I am hopeful at this point.

Thanks again for that suggestion. I will report any gotcha's that we encounter as we move forward with this project for real-world programs.

Peter

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Farley, Peter x23353
Sent: Wednesday, June 07, 2017 9:12 AM
To: IBM-***@LISTSERV.UA.EDU
Subject: Re: How to call VS COBOL II RES program from COBOL V5.2-enabled assembler?

Thanks for the idea of trying init_main_dp and IGZERRE together, I will try that and see if it flies.

These are non-LE-enabled assembler main programs (and some E15/E35 exits) calling VS COBOL II subroutines. Some of those COBOL subroutines can and will be recompiled to eCOBOL 4.2 first and later eCOBOL 5.2, but some cannot be recompiled so easily due to their widespread use elsewhere in the shop and the resource constraints on getting all using applications to test in one or even multiple QA cycles.

Peter

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Tony Harminc
Sent: Tuesday, June 06, 2017 7:25 PM
To: IBM-***@LISTSERV.UA.EDU
Subject: Re: How to call VS COBOL II RES program from COBOL V5.2-enabled assembler?
Post by Farley, Peter x23353
I can call the VS COBOL II RES program multiple times if I first LOAD
and call IGZERRE once (the LE version from CEE.SCEERUN), but using
IGZERRE and CEEPIPI together is not allowed either according to the migration guide (cannot establish 2 different COBOL environments at the same time in the same LE enclave, which makes sense to me).
I'm unclear - are these old and new programs COBOL *main* programs or subroutines? They sound like main programs, but...

I'm speculating here - never tried it, but if you are desperate... If you use CEEPIPI init_main_dp for the new COBOL environment, will it complain that there is already an active LE environment? What if you call CEEPIPI init_main_dp first, and then IGZERRE? In other words how does LE know (and why does it care in the PIPI case) that you have another environment active?

Tony H.
--

This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system.


----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN

This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system.


----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Loading...