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, and 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:

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!

--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing 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.



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.