Well, I said that the LE conforming assembler would DYNAMICALLY call the COBOL sub-program. Then they wouldn't be a LE "routine" would it?
And if I get storage in my assembler program with CEEGTST, where would I put the pointer to the area before I exit, so I can retrieve it upon re-entry?
Dynamically calling LE-conforming assembler
-
- Global moderator
- Posts: 3805
- Joined: Tue Jan 25, 2011 12:02 am
- Skillset: Easytrieve Plus, Cobol, Utilities, that sort of stuff
- Referer: Google
Re: Dynamically calling LE-conforming assembler
Just found this, and I see it is on IBM-MAIN as well.
If you dynamically CALL a COBOL program, that COBOL program's WORKING-STORAGE is not going anywhere until the termination of the run-unit/enclave.
However, how about making a LOADable table, so that you can get the storage you need by name?
If you dynamically CALL a COBOL program, that COBOL program's WORKING-STORAGE is not going anywhere until the termination of the run-unit/enclave.
However, how about making a LOADable table, so that you can get the storage you need by name?
-
- Posts: 10
- Joined: Wed Sep 07, 2016 6:16 pm
- Skillset: cobol,rexx,jcl,sql,tso,ispf,hlasm
- Referer: google
Re: Dynamically calling LE-conforming assembler
BillyBoyo wrote:Just found this, and I see it is on IBM-MAIN as well.
If you dynamically CALL a COBOL program, that COBOL program's WORKING-STORAGE is not going anywhere until the termination of the run-unit/enclave.
However, how about making a LOADable table, so that you can get the storage you need by name?
Thanks for the reply - I'll look into LOADable tables - I don't know anything about it.
-
- Global moderator
- Posts: 3805
- Joined: Tue Jan 25, 2011 12:02 am
- Skillset: Easytrieve Plus, Cobol, Utilities, that sort of stuff
- Referer: Google
Re: Dynamically calling LE-conforming assembler
I'm assuming your sub-program is itself persistent.
You create your storage as an Assembler "program". Then use the LOAD macro to get it into memory, using its name.
If your sub-program is not persistent, LOAD the table from a program which is, and you will still be able to access it via the name in yours.
You create your storage as an Assembler "program". Then use the LOAD macro to get it into memory, using its name.
If your sub-program is not persistent, LOAD the table from a program which is, and you will still be able to access it via the name in yours.
-
- Posts: 10
- Joined: Wed Sep 07, 2016 6:16 pm
- Skillset: cobol,rexx,jcl,sql,tso,ispf,hlasm
- Referer: google
Re: Dynamically calling LE-conforming assembler
BillyBoyo wrote:I'm assuming your sub-program is itself persistent.
You create your storage as an Assembler "program". Then use the LOAD macro to get it into memory, using its name.
If your sub-program is not persistent, LOAD the table from a program which is, and you will still be able to access it via the name in yours.
Right. In CICS would the LOADed program get purged when the transaction is finished? (I don't get a chance to issue a DELETE)
-
- Global moderator
- Posts: 3805
- Joined: Tue Jan 25, 2011 12:02 am
- Skillset: Easytrieve Plus, Cobol, Utilities, that sort of stuff
- Referer: Google
Re: Dynamically calling LE-conforming assembler
I'm fairly sure it would, but I'm not a CICS specialist.
Can you outline how it is that you want this to work? Is it for CICS, or both CICS and batch? How do you want the persistence to work, such that it does as much as you want and not too much?
The idea of the LOAD is being a slightly faster way than using a dynamically-CALLed COBOL program. If you have multiple transactions with simultaneous use, you does that mess you up? For CICS you could steal a few bytes of commarea for an address, but if you want the same code in batch...?
Can you outline how it is that you want this to work? Is it for CICS, or both CICS and batch? How do you want the persistence to work, such that it does as much as you want and not too much?
The idea of the LOAD is being a slightly faster way than using a dynamically-CALLed COBOL program. If you have multiple transactions with simultaneous use, you does that mess you up? For CICS you could steal a few bytes of commarea for an address, but if you want the same code in batch...?
-
- Posts: 10
- Joined: Wed Sep 07, 2016 6:16 pm
- Skillset: cobol,rexx,jcl,sql,tso,ispf,hlasm
- Referer: google
Re: Dynamically calling LE-conforming assembler
As I mentioned earlier, I'm simply trying to emulate existing behaviour. The intent was, as far as I can tell, to emulate the way COBOL dynamic calls work under LE, mainly to avoid having to get/free storage and perform trivial "first time" house keeping on every call.
I haven't studied all the cases/programs in depth but I've more or less come to the conclusion that making them LE-conforming (using CEEENTRY auto storage) and linking them into the COBOL programs is "good enough".
Thanks for your replies - much appreciated.
I haven't studied all the cases/programs in depth but I've more or less come to the conclusion that making them LE-conforming (using CEEENTRY auto storage) and linking them into the COBOL programs is "good enough".
Thanks for your replies - much appreciated.
-
- Posts: 10
- Joined: Wed Sep 07, 2016 6:16 pm
- Skillset: cobol,rexx,jcl,sql,tso,ispf,hlasm
- Referer: google
Re: Dynamically calling LE-conforming assembler
For some reason the "EDIT" button has disappeared, so I'll just briefly add to the above:
The programs are used in both CICS and batch.
The programs are used in both CICS and batch.
-
- Global moderator
- Posts: 3720
- Joined: Sat Dec 19, 2009 8:32 pm
- Skillset: Systems programming, SAS, COBOL, CICS, JCL, SMS, VSAM, etc.
- Referer: other forum
- Location: Dubuque, Iowa, USA
Re: Dynamically calling LE-conforming assembler
Generally, forums (fora) will limit the time to edit a response to 10 or 15 minutes. If you attempt to edit your response after so many minutes, you won't be able to.
EXEC CICS LOAD has a HOLD option. If this option is specified, the program remains in memory until a RELEASE is done or the region comes down. Without the HOLD option, the program is purged when the transaction is complete. If the program is defined as RELOAD=YES, RELEASE will not work and a FREEMAIN must be done to remove the program -- it will not be purged with the transaction ends.
EXEC CICS LOAD has a HOLD option. If this option is specified, the program remains in memory until a RELEASE is done or the region comes down. Without the HOLD option, the program is purged when the transaction is complete. If the program is defined as RELOAD=YES, RELEASE will not work and a FREEMAIN must be done to remove the program -- it will not be purged with the transaction ends.
-
- Similar Topics
- Replies
- Views
- Last post
-
-
Assembler program accessing IMS DB Database
by gschhatwal1176 » Sat Aug 08, 2020 12:34 pm » in Assembler - 5
- 9732
-
by NicC
View the latest post
Sun Aug 09, 2020 2:53 am
-
-
-
how to decompress DB2 SMF records in assembler program
by chaat » Fri Feb 19, 2021 9:53 am » in Assembler - 3
- 3479
-
by willy jensen
View the latest post
Sun Feb 21, 2021 4:26 pm
-
-
- 0
- 1527
-
by rogerstrycova
View the latest post
Fri Oct 22, 2021 12:41 pm
-
-
Calling Java program on UNIX/USS from a COBOL CICS program?
by zbius » Tue Nov 05, 2024 2:37 pm » in IBM Cobol - 2
- 2593
-
by zbius
View the latest post
Wed Nov 06, 2024 6:02 pm
-