Creating a user profile from a file

I am writing a program to create user profile from a file. For OUTQ, INLPGM, INLMENU, I get error: CPD0078. The value for parameter is not a valid name.

Here is how I built the parameters:

DCL &INLPGM TYPE(*CHAR) LEN(21)

Then I dumped the copy from user profile to an outfile:

If &UPINPG = '*NONE', then &INPPGM = *none Else do chgvar &INLPGM value(&upinpl *TCAT '/' *TCAT &upinpg)

What can I do to fix this error?

A program name can only be 10 characters long.

Change &INLPGM to LEN(10) ... If &INLPGM is being passed to the program as Library/ProgramName, then you will need to use the %SST function to break it into two parameters.

For example:

DCL        VAR(&OUTQ) TYPE(*CHAR) LEN(20) 

DCL        VAR(&OUTQNAME) TYPE(*CHAR) LEN(10)
DCL        VAR(&OUTQLIB) TYPE(*CHAR) LEN(10) 

CHGVAR     VAR(&OUTQNAME) VALUE(%SST(&OUTQ 1 10)) 
CHGVAR     VAR(&OUTQLIB) VALUE(%SST(&OUTQ 11 10))

Good Luck!

This was first published in July 2007