home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 8 Other
/
08-Other.zip
/
HPTDEM.ZIP
/
HSBMT.RXC
< prev
next >
Wrap
Text File
|
1992-03-02
|
5KB
|
131 lines
/* HSBMT.CMD (c) Copyright HeteroGenius Systems Ltd 1991 */
CALL RXFUNCADD "DISPLAY","HRXDLL","HRXDSPL"
CALL RXFUNCADD "HRXVGET","HRXDLL","HRXVPRF"
CALL RXFUNCADD "HRXVPUT","HRXDLL","HRXVPRF"
CALL RXFUNCADD "HAPSBMT","HAPPC","HAPSBMT"
SIGNAL ON NOTREADY NAME ioerr
/* Get the profile variables */
profvars = "hostlu jclname"
CALL HRXVGET "HPTSO",profvars
/* Get the command arguments */
ARG subfile,fspec,lu
IF subfile = '' THEN DO
SAY 'HBP715I Submit file name required'; EXIT 12; END
IF lu <> '' THEN hostlu = lu
IF fspec = '' THEN fspec = subfile
msg = ''
/* Prompt the user for LU name and JCL file name */
cursor = "HOSTLU"
DO UNTIL msg = ''
CALL DISPLAY "HBPSUBP1",cursor,msg; msg = ''
IF result = "END" THEN DO; subrc = 4; SIGNAL finish; END
IF result <> "ENTER" THEN EXIT 12
IF hostlu = '' THEN DO
msg = "ENTER HOST NAME"
cursor = "HOSTLU"; ITERATE; END
IF jclname <> '' THEN
IF STREAM(jclname,'C','QUERY EXISTS') = '' THEN DO
msg = "FILE NOT FOUND:" jclname
cursor = "JCLNAME"; ITERATE; END
END
/* If skeleton JCL supplied, build the jobstream in a temporary file */
IF jclname <> '' THEN DO
SAY 'HBP716I Building jobstream file'
tempfile = aloctemp()
CALL copyjcl
subfile = tempfile
END
/* Submit the jobstream to the host */
subrc = HAPSBMT(hostlu,subfile)
IF jclname <> '' THEN
ADDRESS CMD '@DEL' tempfile
finish:
CALL HRXVPUT "HPTSO",profvars
EXIT subrc
/* Procedure to allocate a temporary file name */
aloctemp: PROCEDURE
DO UNTIL STREAM(temp,'C','QUERY EXISTS') = ''
temp = 'ZZZ' || TIME('S') || '.J' || SUBSTR(TIME('L'),10,2)
END
RETURN temp
/* Procedure to copy JCL skeleton to temporary file */
copyjcl:
msg = STREAM(tempfile,'C','OPEN')
drive = FILESPEC('D',fspec); path = FILESPEC('P',fspec)
PARSE VAR path '\' qual1 '\' qual2 '\' qual3 '\' qual4 '\',
qual5 '\' qual6 '\' qual7 '\' qual8 '\' qual9 '\'
PARSE VALUE FILESPEC('N',fspec) WITH fname '.' ftype
msg = STREAM(jclname,'C','OPEN READ')
DO lineno = 1 WHILE LINES(jclname) > 0
jclstmt = LINEIN(jclname)
jclstmt = TRANSLATE(jclstmt,' ','09'x)
IF LEFT(jclstmt,1) = ')' THEN DO
PARSE VALUE LEFT(jclstmt,71) WITH opcode operand
opcode = TRANSLATE(opcode)
operand = replace(operand,"&DRIVE",drive)
operand = replace(operand,"&PATH",path)
operand = replace(operand,"&FNAME",fname)
operand = replace(operand,"&FTYPE",ftype)
operand = replace(operand,"&QUAL1",qual1)
operand = replace(operand,"&QUAL2",qual2)
operand = replace(operand,"&QUAL3",qual3)
operand = replace(operand,"&QUAL4",qual4)
operand = replace(operand,"&QUAL5",qual5)
operand = replace(operand,"&QUAL6",qual6)
operand = replace(operand,"&QUAL7",qual7)
operand = replace(operand,"&QUAL8",qual8)
operand = replace(operand,"&QUAL9",qual9)
SELECT
WHEN opcode = ')INCLUDE' THEN DO
operand = STRIP(operand)
IF operand = '' THEN operand = subfile
CALL copyfile operand
END
WHEN opcode = ')SUBST' THEN DO
CALL LINEOUT tempfile,operand
END
OTHERWISE
SIGNAL stmterr
END
END
ELSE CALL LINEOUT tempfile,jclstmt
END
msg = STREAM(jclname,'C','CLOSE')
msg = STREAM(tempfile,'C','CLOSE')
RETURN
/* Procedure to copy a named file to temporary file */
copyfile:
ARG filename
msg = STREAM(filename,'C','OPEN READ')
DO WHILE LINES(filename) > 0
data = LINEIN(filename)
CALL LINEOUT tempfile,data
END
msg = STREAM(filename,'C','CLOSE')
RETURN
/* Procedure to replace one substring by another */
replace: PROCEDURE
PARSE ARG source,string1,string2
PARSE UPPER ARG usource,ustring1
i = POS(ustring1,usource)
IF i = 0 THEN RETURN source
RETURN INSERT(string2,DELSTR(source,i,LENGTH(string1)),i-1)
/* Error routines */
ioerr:
filename = CONDITION('D')
SAY 'HBP717I Error at statement' lineno 'of file' jclname
SAY jclstmt
IF filename <> '' THEN
SAY 'HBP718I File in error:' filename STREAM(filename)
msg = STREAM(filename,'C','CLOSE')
SIGNAL errexit
stmterr:
SAY 'HBP719I Unknown command at statement' lineno 'of file' jclname
SAY jclstmt
errexit:
msg = STREAM(tempfile,'C','CLOSE')
msg = STREAM(jclname,'C','CLOSE')
ADDRESS CMD '@DEL' tempfile
subrc = 12
SIGNAL finish