|
Okay, here's a quick CL version... If tmpnam is successful, the return
value (&PTR, below) will point to the same memory as &STORAGE. Storage
will be a C-style (zero-terminated) string... to turn it back into a
fixed-length CL char field, I use the C strlen() function to get the
length, and then just substring it out...
PGM PARM(&FILENAME)
DCL VAR(&FILENAME) TYPE(*CHAR) LEN(40)
DCL VAR(&STORAGE) TYPE(*CHAR) LEN(40)
DCL VAR(&PTR) TYPE(*PTR)
DCL VAR(&NULLPTR) TYPE(*PTR)
DCL VAR(&LEN) TYPE(*INT) LEN(4)
CALLPRC PRC('_C_IFS_tmpnam') +
PARM((&STORAGE *BYREF)) +
RTNVAL(&PTR)
IF (&PTR *NE &NULLPTR) DO
CALLPRC PRC('strlen') PARM((&PTR *BYVAL)) +
RTNVAL(&LEN)
IF (&LEN *GT 0) DO
CHGVAR VAR(&FILENAME) VALUE(%SST(&STORAGE 1 &LEN))
ENDDO
ENDDO
ENDPGM
On 6/8/2015 1:52 PM, Michael Ryan wrote:
That would be cool Scott. I do it in RPG, but I need it in a CL, andThis is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
didn't
want to have to switch languages. Thanks!
On Mon, Jun 8, 2015 at 2:48 PM, Scott Klement <
midrange-l@xxxxxxxxxxxxxxxx>
wrote:
This API returns a pointer, not a character field...
Would recommend doing this in RPG where it's simpler, but if you need to
do it in CL, I could whip up an example...
On 6/8/2015 12:15 PM, Michael Ryan wrote:
So my code looks like this:
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
PGM PARM(&FILENAME)
DCLPRCOPT DFTACTGRP(*NO) ACTGRP(*CALLER) BNDDIR(QC2LE)
DCL VAR(&FILENAME) TYPE(*CHAR) LEN(40)
CALLPRC PRC('_C_IFS_tmpnam') PARM((*OMIT *BYVAL)) +
RTNVAL(&FILENAME)
ENDPGM
Seems pretty straightforward, but it's returning NULL (all hex zeroes
anyway).
Anyone see a problem?
Thanks!
--
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
--
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.