Re: CSI FTPBATCH command variables

New Message Reply Date view Thread view Subject view Author view Other groups

Subject: Re: CSI FTPBATCH command variables
From: Frank Swarbrick (Frank.Swarbrick@efirstbank.com)
Date: Wed Apr 02 2008 - 10:07:45 EST


>>> On 4/2/2008 at 5:19 AM, in message
<OFF49F809D.B461E152-ON8525741F.003DC070-8525741F.003E0257@winwholesale.com>

 <industrynews@winwholesale.com> wrote:
> owner-vse-l@Lehigh.EDU wrote on 04/01/2008 08:22:21 PM:
>> What I *really* want to do is have the SETPARM statements in a VSE
>> PROC that would be executed before the EXEC FTPBATCH.
> 
>> Then before EXEC FTPBATCH I'd have just this:
>> // EXEC PROC=FTPCREDS
> 
>> But FTPBATCH does not appear to recognise the symbolic parameters
>> when done this way.
> 
>       That is not the "fault" of FTPBATCH.  As you "discovered" with 
> your
> final solution, that is how VSE procedure levels are documented to 
> "work."

This seems to me to be not true.  Take the following JCL:
* $$ JOB JNM=FGETPRMS,CLASS=3,USER='FJS 04-02 09:00' 
// JOB GETPARMS                                      
// SETPARM PARM1='This is my symbolic parameter     '
// SETPARM PARM2=                                    
// SETPARM PWRJOB,PARM3='THIS IS PARM 3'             
// LIBDEF PROC,SEARCH=MADS.FJS                       
// LIBDEF PHASE,SEARCH=MADS.FJS                      
// EXEC PROC=SETPARMS,PARM2                          
// EXEC PGM=GETPARMS                                 
PARM1                                                
PARM2                                                
PARM3                                                
PARM4                                                
/*                                                   
/&                                                   
* $$ EOJ                                             

Where SETPARMS.PROC is

// PROC
// SETPARM PARM2='PARM 2!'                          
// SETPARM PWRJOB,PARM4='PARM 4 IS A POWER JOB PARM'
/+

And GETPARMS is the following Cobol program:
ID DIVISION.                                             
PROGRAM-ID. GETPARMS.                                    
DATA DIVISION.                                           
WORKING-STORAGE SECTION.                                 
01  INPUT-CARD                  VALUE LOW-VALUES.        
    05  IC-PARM-NAME            PIC X(7).                
77  GETSYMB                     PIC X(8) VALUE 'GETSYMB'.
77  SYMB-LEN                    PIC S9(4) COMP.          
01  SYMB-VALUE.                                          
    05  PIC X OCCURS 1 TO 50 DEPENDING ON SYMB-LEN.      
                                                         
PROCEDURE DIVISION.                                      
    ACCEPT INPUT-CARD                                    
    PERFORM UNTIL INPUT-CARD = LOW-VALUES                
        PERFORM GET-SYMB                                 
        MOVE LOW-VALUES TO INPUT-CARD                    
        ACCEPT INPUT-CARD                                
    END-PERFORM                                          
    GOBACK.                                              
                                                         
GET-SYMB.                                                
    CALL GETSYMB USING IC-PARM-NAME                      
                       SYMB-VALUE                        
                        SYMB-LEN                       
    IF RETURN-CODE = ZERO                             
        DISPLAY IC-PARM-NAME ' = ' SYMB-VALUE         
    ELSE                                              
        DISPLAY 'PARM ' IC-PARM-NAME ' DOES NOT EXIST'
    END-IF                                            
    EXIT.                                             
                                                      
END PROGRAM GETPARMS.                                 

Where GETSYMB is the following assembler program:
GETSYMB  TITLE 'GET THE VALUE OF A SYMBOLIC PARAMETER'                 
GETSYMB  AMODE 31                                                      
GETSYMB  RMODE ANY                                                     
GETSYMB  START 0                                                       
         SAVE  (14,12)             SAVE CALLER'S REGISTERS             
         BASR  R10,0               REGISTER 10 NOW BASE REGISTER       
         USING *,R10               DECLARE ADDRESSABILITY              
         B     START               JUMP PAST EYECATCHER                
PROGID   DC    CL8'GETSYMB'        EYECATCHER                          
START    DS    0H                  HOUSEKEEPING                        
         ST    R13,SAVEPREV        SAVE CALLER'S SAVEAREA POINTER      
         LA    R13,SAVEAREA        POINT R13 TO OUR SAVEAREA           
MAIN     DS    0H                  MAIN ROUTINE                        
         LM    R2,R4,0(R1)         SAVE ADDRS OF PARMS IN R2,R3,R4     
         GETSYMB AREA=WORKAREA,PARMNAM=(2),VALBUF=(3),LENFLD=(4)       
RETURN   DS    0H                  WE'RE DONE                          
         L     R13,SAVEPREV        RESTORE CALLER'S SAVEAREA POINTER   
         RETURN (14,12),RC=(15)    RETURN, PASSING GETSYMB RESULT (R15)
         DROP  R10                                                     
***********************************************************************
         EJECT                                                         
*        "WORKING STORAGE"                                             
         DC    C'<*GETSYMB*>'                                          
WORKAREA DC    CL100' '                                                 
SAVEAREA DS    0CL72                                                    
SAVEPLI  DC    F'0'                                                     
SAVEPREV DC    A(00000000)                                              
SAVENEXT DC    A(00000000)                                              
SAVEREGS DC    15F'0'                                                   
         DC    C'>*GETSYMB*<'                                           
*********************************************************************** 
         END

The results of the job are:
PARM1   = This is my symbolic parameter
PARM2   = PARM 2!                      
PARM3   = THIS IS PARM 3               
PARM4   = PARM 4 IS A POWER JOB PARM   

PARM4 is a PWRJOB parm, and therefore exists from creation time, at whatever
level (as far as I know), until the end of the POWER job.

Frank


New Message Reply Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b25 : Fri May 16 2008 - 11:05:06 EDT