× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Hi Fellow List Members

I know this isn't an RPG problem, but in the absence of any other more relevant 
list I hope you don't mind if I post it here.

I have a program that I've written which does nothing but accept an IFS 
path/document and a library name, and then attempts to copy the IFS document to 
a file in the library.  I've coded the program so that if the value *DEFAULT is 
passed then it uses a hard-coded path and file based on the system name:

0001.00              PGM        PARM(&STMF &LIB)                                
         
0002.00                                                                         
         
0003.00              DCL        VAR(&STMF)    TYPE(*CHAR) LEN(127)              
         
0003.01              DCL        VAR(&LIB)     TYPE(*CHAR) LEN(10)               
         
0003.02              DCL        VAR(&SYSNAME) TYPE(*CHAR) LEN(8)                
         
0004.00                                                                         
         
0007.01 /* If *DEFAULT specified for the stream file then base it on the system 
that  */ 
0007.02 /* is being used...                                                     
      */ 
0007.03                                                                         
         
0007.04              IF         COND(&STMF *EQ '*DEFAULT') THEN(DO)            
0008.00                RTVNETA    SYSNAME(&SYSNAME)                             
         
0009.00                CHGVAR     VAR(&STMF) VALUE('/masonj02/libsuk02.csv')    
         
0010.00                IF         COND(&SYSNAME *EQ 'PFIZUK01') THEN(DO)        
         
0010.01                  CHGVAR     VAR(&STMF) +                                
         
0010.02                               VALUE('/effs_interface/libsuk01.csv')     
         
0011.00                ENDDO                                                    
         
0012.01              ENDDO                                                      
         
0013.00                                                                         
         
0014.00 /* Copy the stream file to the physical file...                         
      */ 
0015.00                                                                         
       
0015.01              CPYFRMIMPF FROMSTMF(&STMF) TOFILE(&LIB/HWKP100A) +         
       
0015.02                           MBROPT(*REPLACE) RCDDLM(*LF) STRDLM(*NONE)    
       
0017.00                                                                         
       
0018.00              ENDPGM                                                     
       

When I call the program using:

     CALL program PARM('*DEFAULT' 'MASONJ04')

The program falls over with the error message CPD0186 "Path name cannot begin 
with *." When I debug the program and look at the contents of the path name 
variable, debug shows:
 *...+....1....+....2....+....3....+....4....+....5 
'*DEFAULT                         MASONJ04         '
'                sonj04ØE*DEFAULTE'
'MASONJ04»             '                       

and the library is shown as MASONJ04 as expected.

First question is: Why is the &STMF variable showing all of the garbage?  The 
parameter passed is enclosed in single quotes which (I have always believed) 
should cause it to be padded with blanks.

As a work around I changed the *DEFAULT test to use a substring:

0007.04              IF         COND(%SST(&STMF 1 8) *EQ '*DEFAULT') THEN(DO)   
         

When I run the program now using the same parameters, the condition is met and 
the default path is set.  The only trouble here (and this is the second 
question) is that the &LIB field ends up as blank by the time the program gets 
to the CPYFRMIMPF statement.  

Does anybody have any ideas on why this would happen?  I've never known CL 
parameters to overlay each other before and have never had to pass padding 
blanks in parameters.   If I swap the parameters around then it works, but only 
if I use *DEFAULT.  If I pass an actual path then the garbage is included in 
the path name and the program fails.

We're running v5r2m0 of the operating system and the program is a standard CLP 
source type.

Thanks

Jonathan
www.astradyne-uk.com



Jonathan Mason
www.astradyne-uk.com


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

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.