Re: COBOL PIC format for a 64 bit unsigned int ("long long") ?
- From: "Richard Maher" <maher_rj@xxxxxxxxxxxxxxxxxx>
- Date: Tue, 13 Oct 2009 06:54:51 +0800
Hi Jan-Erik,
"Jan-Erik Söderholm" <jan-erik.soderholm@xxxxxxxxx> wrote in message
news:QgNAm.12209$U5.166948@xxxxxxxxxxxxxxxxxx
I am trying to call some COBOL code from a piece of C...
The call from C looks like this :
char cob_inart[16];
unsigned long long cob_insernr;
char cob_utben[16];
char cob_utordnr[16];
int rc;
rc = MES101(cob_inart, cob_insernr, cob_utben, cob_utordnr);
I get a ACCVIO when trying to use the "unsigned long long"
paramater on the COBOL side. I have probably not got the
right PIC clause to match the "unsigned long long", I guess.
Currently it looks like this (in MES101.COB) :
WORKING-STORAGE SECTION.
01 Answer PIC S9(9) COMP.
LINKAGE SECTION.
01 c_inart PIC X(16).
01 c_insernr pic 9(16) comp.
01 c_ben PIC X(16).
01 c_ordnr PIC X(16).
PROCEDURE DIVISION USING c_inart c_insernr c_ben c_ordnr
giving Answer.
As soon as I try to do anything with the "c_insernr"
paramater (such as DISPLAY or MOVE) the COBOL code ACCVIO's.
Does anyone have a clue what the PIC clause should look
like to match a "unsigned long long" ?
And yes, I have scanned the COBOL and C User Guides and
Ref Manuals, but didn't find anything clear on this point.
I'm guessing Pic 9(16) comp should cover it size wize. (If long long =
quadword)
What is the default passing mechanism for long longs? I'm guessing BY VALUE
rather than BY REFERENCE. Try telling C to send it by reference, or in your
COBOL have a pointer (probably ponter-64 but I've never used one) and say
SET MY_POINTER_64 TO REFERENCE C_INSERNR and then DISPLAY C_INSERNR and see
if it contains what you want.
Why you'd be using a quadword to store what is presumably an error number
(or using C at all for that matter) I don't know. But then you're a wrapper
man IIRC.
Cheers Richard Maher
.
- References:
- COBOL PIC format for a 64 bit unsigned int ("long long") ?
- From: Jan-Erik Söderholm
- COBOL PIC format for a 64 bit unsigned int ("long long") ?
- Prev by Date: Re: DSW41/42 option
- Next by Date: Re: COBOL PIC format for a 64 bit unsigned int ("long long") ?
- Previous by thread: Re: COBOL PIC format for a 64 bit unsigned int ("long long") ?
- Next by thread: Re: COBOL PIC format for a 64 bit unsigned int ("long long") ?
- Index(es):