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
This archive was generated by hypermail 2b25 : Fri May 16 2008 - 11:05:06 EDT