home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / HPTDEM.ZIP / HSBMT.RXC < prev    next >
Text File  |  1992-03-02  |  5KB  |  131 lines

  1. /* HSBMT.CMD    (c) Copyright HeteroGenius Systems Ltd 1991     */
  2. CALL RXFUNCADD "DISPLAY","HRXDLL","HRXDSPL"
  3. CALL RXFUNCADD "HRXVGET","HRXDLL","HRXVPRF"
  4. CALL RXFUNCADD "HRXVPUT","HRXDLL","HRXVPRF"
  5. CALL RXFUNCADD "HAPSBMT","HAPPC","HAPSBMT"
  6. SIGNAL ON NOTREADY NAME ioerr
  7. /* Get the profile variables */
  8. profvars = "hostlu jclname"
  9. CALL HRXVGET "HPTSO",profvars
  10. /* Get the command arguments */
  11. ARG subfile,fspec,lu
  12. IF subfile = '' THEN DO
  13.    SAY 'HBP715I Submit file name required'; EXIT 12; END
  14. IF lu <> '' THEN hostlu = lu
  15. IF fspec = '' THEN fspec = subfile
  16. msg = ''
  17. /* Prompt the user for LU name and JCL file name */
  18. cursor = "HOSTLU"
  19. DO UNTIL msg = ''
  20.    CALL DISPLAY "HBPSUBP1",cursor,msg; msg = ''
  21.    IF result = "END" THEN DO; subrc = 4; SIGNAL finish; END
  22.    IF result <> "ENTER" THEN EXIT 12
  23.    IF hostlu = ''  THEN DO
  24.       msg = "ENTER HOST NAME"
  25.       cursor = "HOSTLU"; ITERATE; END
  26.    IF jclname <> '' THEN
  27.       IF STREAM(jclname,'C','QUERY EXISTS') = '' THEN DO
  28.          msg = "FILE NOT FOUND:" jclname
  29.          cursor = "JCLNAME"; ITERATE; END
  30. END
  31. /* If skeleton JCL supplied, build the jobstream in a temporary file */
  32. IF jclname <> '' THEN DO
  33.    SAY 'HBP716I Building jobstream file'
  34.    tempfile = aloctemp()
  35.    CALL copyjcl
  36.    subfile = tempfile
  37. END
  38. /* Submit the jobstream to the host */
  39. subrc = HAPSBMT(hostlu,subfile)
  40. IF jclname <> '' THEN
  41.    ADDRESS CMD '@DEL' tempfile
  42. finish:
  43. CALL HRXVPUT "HPTSO",profvars
  44. EXIT subrc
  45. /* Procedure to allocate a temporary file name */
  46. aloctemp: PROCEDURE
  47.    DO UNTIL STREAM(temp,'C','QUERY EXISTS') = ''
  48.       temp = 'ZZZ' || TIME('S') || '.J' || SUBSTR(TIME('L'),10,2)
  49.    END
  50.    RETURN temp
  51. /* Procedure to copy JCL skeleton to temporary file */
  52. copyjcl:
  53.    msg = STREAM(tempfile,'C','OPEN')
  54.    drive = FILESPEC('D',fspec); path = FILESPEC('P',fspec)
  55.    PARSE VAR path '\' qual1 '\' qual2 '\' qual3 '\' qual4 '\',
  56.         qual5 '\' qual6 '\' qual7 '\' qual8 '\' qual9 '\'
  57.    PARSE VALUE FILESPEC('N',fspec) WITH fname '.' ftype
  58.    msg = STREAM(jclname,'C','OPEN READ')
  59.    DO lineno = 1 WHILE LINES(jclname) > 0
  60.       jclstmt = LINEIN(jclname)
  61.       jclstmt = TRANSLATE(jclstmt,' ','09'x)
  62.       IF LEFT(jclstmt,1) = ')' THEN DO
  63.          PARSE VALUE LEFT(jclstmt,71) WITH opcode operand
  64.          opcode = TRANSLATE(opcode)
  65.          operand = replace(operand,"&DRIVE",drive)
  66.          operand = replace(operand,"&PATH",path)
  67.          operand = replace(operand,"&FNAME",fname)
  68.          operand = replace(operand,"&FTYPE",ftype)
  69.          operand = replace(operand,"&QUAL1",qual1)
  70.          operand = replace(operand,"&QUAL2",qual2)
  71.          operand = replace(operand,"&QUAL3",qual3)
  72.          operand = replace(operand,"&QUAL4",qual4)
  73.          operand = replace(operand,"&QUAL5",qual5)
  74.          operand = replace(operand,"&QUAL6",qual6)
  75.          operand = replace(operand,"&QUAL7",qual7)
  76.          operand = replace(operand,"&QUAL8",qual8)
  77.          operand = replace(operand,"&QUAL9",qual9)
  78.          SELECT
  79.          WHEN opcode = ')INCLUDE' THEN DO
  80.             operand = STRIP(operand)
  81.             IF operand = '' THEN operand = subfile
  82.             CALL copyfile operand
  83.          END
  84.          WHEN opcode = ')SUBST' THEN DO
  85.             CALL LINEOUT tempfile,operand
  86.          END
  87.          OTHERWISE
  88.             SIGNAL stmterr
  89.          END
  90.       END
  91.       ELSE CALL LINEOUT tempfile,jclstmt
  92.    END
  93.    msg = STREAM(jclname,'C','CLOSE')
  94.    msg = STREAM(tempfile,'C','CLOSE')
  95.    RETURN
  96. /* Procedure to copy a named file to temporary file */
  97. copyfile:
  98.    ARG filename
  99.    msg = STREAM(filename,'C','OPEN READ')
  100.    DO WHILE LINES(filename) > 0
  101.       data = LINEIN(filename)
  102.       CALL LINEOUT tempfile,data
  103.    END
  104.    msg = STREAM(filename,'C','CLOSE')
  105.    RETURN
  106. /* Procedure to replace one substring by another */
  107. replace: PROCEDURE
  108.    PARSE ARG source,string1,string2
  109.    PARSE UPPER ARG usource,ustring1
  110.    i = POS(ustring1,usource)
  111.    IF i = 0 THEN RETURN source
  112.    RETURN INSERT(string2,DELSTR(source,i,LENGTH(string1)),i-1)
  113. /* Error routines */
  114. ioerr:
  115.    filename = CONDITION('D')
  116.    SAY 'HBP717I Error at statement' lineno 'of file' jclname
  117.    SAY jclstmt
  118.    IF filename <> '' THEN
  119.       SAY 'HBP718I File in error:' filename STREAM(filename)
  120.    msg = STREAM(filename,'C','CLOSE')
  121.    SIGNAL errexit
  122. stmterr:
  123.    SAY 'HBP719I Unknown command at statement' lineno 'of file' jclname
  124.    SAY jclstmt
  125. errexit:
  126.    msg = STREAM(tempfile,'C','CLOSE')
  127.    msg = STREAM(jclname,'C','CLOSE')
  128.    ADDRESS CMD '@DEL' tempfile
  129.    subrc = 12
  130.    SIGNAL finish
  131.