046700 MOVE WS-REQ-WK-DATA(1:WS-INT-LEN)
046800 TO WS-LNK-BIN-STRING
046900 MOVE WS-SMG3-INT-LEN TO WS-LNK-BIN-LENGTH
047100 CALL WS-C-PGM-BIN-B64 USING DFHEIBLK
047700 MOVE WS-LNK-B64-LENGTH TO WS-CDATA-DATA-LENGTH
047800 MOVE WS-LNK-B64-STRING(1:WS-LNK-B64-LENGTH)
047900 TO WS-DATA-AREA.
066700 MOVE SPACES TO WS-LNK-B64-STRING
066800 MOVE ZERO TO WS-LNK-B64-LENGTH
066900 MOVE WS-SUB-XML-LEN TO WS-LNK-B64-LENGTH
067000 MOVE WS-DESC-PAYLD (1:WS-SUB-XML-LEN)
067100 TO WS-LNK-B64-STRING
067200 MOVE SPACES TO WS-LNK-BIN-STRING
067300 MOVE ZERO TO WS-LNK-BIN-LENGTH
067500 CALL WS-C-PGM-B64-BIN USING DFHEIBLK
068100 MOVE WS-LNK-BIN-LENGTH TO WS-CDATA-DATA-LENGTH
068200 MOVE WS-LNK-BIN-STRING(1:WS-LNK-BIN-LENGTH)
068300 TO WS-DATA-AREA
I am passing 32000 Binary data to Base 64 converter in WS-LNK-BIN-STRING it gives 42648 bytes in base 64 format in WS-LNK-B64-STRING. My program was able to receive.
When I sent this 42k string back to Base 64 to binary converter, I was expecting error as this string is more than 32k . But to my surprise this worked and I got perfect 32000 sting back in Binary format. Its was the same data message i converted to Base 64.
That means that we can pass more than 32k data in COBOL call.
My calling program is CICS program and the Called modules are cobol modules. all 3 programs have PCT entries present in CICS region.
Joined: 14 Jan 2008 Posts: 2504 Location: Atlanta, Georgia, USA
Keep in mind that CALL's are local to the given CICS region. You cannot CALL program "B" if it is in another region, because each parameter is passed as an ADDRESS (not the actual data), which is in the Calling (Local) region.