View previous topic :: View next topic
|
Author |
Message |
jagadeeshkumar
New User
Joined: 17 May 2007 Posts: 11 Location: Chennai, India
|
|
|
|
Hi,
I am converting a cobol program from OS/VS to enterprise cobol. The program had the following piece of code.
EXEC CICS SEND
MAP ('PCXEI01')
MAPSET ('PCXEI00')
SET (ADDRESS OF TIOA-PTR)
END-EXEC.
where TIOA-PTR is a BLL-CELLS pointer.
I changed this to
EXEC CICS SEND
MAP ('PCXEI01')
MAPSET ('PCXEI00')
SET (ADDRESS OF RET-PAGE)
END-EXEC.
where RET-PAGE is the data structure pointed by the TIOA-PTR. I commented all the BLL-CELLS pointers.
When I execute this program, the address which is set to RET-PAGE is not valid. CICS says it could not determine the address.
Is there any ways to fix this?? |
|
Back to top |
|
|
Earl Haigh
Active User
Joined: 25 Jul 2006 Posts: 475
|
|
|
|
based on your limited description.
Why not move the mapset area to the COBOLworking storage area
and quit using the linkage section. |
|
Back to top |
|
|
jagadeeshkumar
New User
Joined: 17 May 2007 Posts: 11 Location: Chennai, India
|
|
|
|
Hi,
The MAPSET PCXEI01 is defined in the working storage section. The data structure RET-PAGE is in the linkage section. The program looks like
WORKING-STORAGE SECTION.
01 PCXEI01O.
02 FILLER PIC X(12).
02 FILLER PICTURE X(2).
. . . .
LINKAGE SECTION.
COPY DLIUIB.
01 RET-PAGE.
05 TIOA-ADDR PIC S9(8) COMP.
PROCEDURE DIVISION.
. . . . .
EXEC CICS SEND
MAP ('PCXEI01')
MAPSET ('PCXEI00')
SET (ADDRESS OF RET-PAGE)
END-EXEC. |
|
Back to top |
|
|
Garry Carroll
Senior Member
Joined: 08 May 2006 Posts: 1193 Location: Dublin, Ireland
|
|
|
|
Quote: |
EXEC CICS SEND
MAP ('PCXEI01')
MAPSET ('PCXEI00')
SET (ADDRESS OF TIOA-PTR)
END-EXEC. |
My reading of the APRM fails to show SET parameter as an option on EXEC CICS SEND MAP .
Garry. |
|
Back to top |
|
|
rpuhlman
New User
Joined: 11 Jun 2007 Posts: 80 Location: Columbus, Ohio
|
|
|
|
Actually, SET is a valid option of the SEND command:
Quote: |
SET(ptr-ref)
specifies the pointer to be set to the address of the input or output data.
The SET option specifies that completed pages are to be returned to the application program. The pointer is set to the address of a list of completed pages. See the description of the SET option in the section on full BMS in Standard BMS the CICS Application Programming Guide for more guidance about using the SET option.
The application program regains control either immediately following the SEND MAP command (if the current page is not yet completed), or at the label specified in a HANDLE CONDITION RETPAGE command, if the page has been completed.
If TIOAPFX=YES is specified in the map definition, the pointer returned contains the address of the TIOA prefix. The user data starts at offset X'0C' from the start of the TIOA prefix.
|
Quoted from the CICS TS/zOS Language Reference. In Jagadeesh's case, SET is now being used out of context. Jagadeesh, remove the SET option from the SEND command and the RET-PAGE pointer in your linkage section. If you are still having issues with the SEND command, please let us know what the response code is along with any other diagnostic info.
Rick |
|
Back to top |
|
|
Earl Haigh
Active User
Joined: 25 Jul 2006 Posts: 475
|
|
|
|
You say mapset is defined in working storage ,
then
rpuhlman has it correct
remove the set command |
|
Back to top |
|
|
jagadeeshkumar
New User
Joined: 17 May 2007 Posts: 11 Location: Chennai, India
|
|
|
|
Hi,
I cannot remove the SET option because the program uses the address which is set here. Basically, this program reads a database , populates a map and sends the data to printer. In procedure division, i have
EXEC CICS SEND
MAP ('PCXEI01')
MAPSET ('PCXEI00')
SET (ADDRESS OF RET-PAGE) --> Get the address to RET-PAGE
END-EXEC.
After this it assigns this address to a data structure TIOA-DATA in Linkage-Section.
EXEC CICS INQUIRE TERMINAL(EIBTRMID)
PRINTER(PCIASDPR) --> Get the address of Printer
END-EXEC.
EXEC CICS WRITEQ TD --> send information from linkage section to printer.
QUEUE (PCIASDPR)
FROM (TIOA-DATA)
LENGTH (TIOA-LENGTH)
END-EXEC.
So, If I remove the SET boption , I cannot get the address of the output map and use it in the WRITEQ command :-( |
|
Back to top |
|
|
rpuhlman
New User
Joined: 11 Jun 2007 Posts: 80 Location: Columbus, Ohio
|
|
|
|
Jagadeesh,
This is info you should have provided from the beginning of your post. I'm extremely busy with work right now, but I will look into this later on tonight. Without looking at your code, there are too many questions remaining. I recommend that you speak with your SYSPROG in the meantime. Earl if you can jump in here, go for it. I will check back later on.
Rick |
|
Back to top |
|
|
Earl Haigh
Active User
Joined: 25 Jul 2006 Posts: 475
|
|
|
|
HUH ? THIS IS BASIC CICS PROGRAMMING STUFF.
JUST CHANGE WHERE YOU SENDING DATA FROM FOR THE TDQ WRITE.
SOMETHING LIKE THIS:
MOVE LENGTH OF PCEX101O TO WS-MAP-LENGTH.
EXEC CICS WRITEQ TD
QUEUE(PCIASDPR)
FROM (PCEX101O)
LENGTH (WS-MAP-LENGTH)
END-EXEC.
AS RPUHLMAN SUGGESTED,
TALK TO YOUR CICS SYSTEMS PROGRAMMER
BY THE WAY
EXEC CICS INQUIRE TERMINAL(EIBTRMID)
PRINTER(PCIASDPR) --> Get the address of Printer
END-EXEC.
THIS DOES NOT GET THE ADDRESS OF PRINTER, IT ACQUIRES
THE 4 CHARACTER ASSOCIATED PRINTER ID. |
|
Back to top |
|
|
jagadeeshkumar
New User
Joined: 17 May 2007 Posts: 11 Location: Chennai, India
|
|
|
|
Thank you very much for the suggestions. I ll try this first up tomorrow and see what happens. I spoke to my system programmers and they are also working on it. |
|
Back to top |
|
|
|