PROGRAM SPWNSP C C SPWNSP V1.01 C C WRITTEN 9-MAR-82 BY JOHN OSUDAR C C THIS PROGRAM WILL ACCEPT MCR COMMANDS IN A VS:-QUEUE CALLED C SPWNSP, AND SPAWN THEM ONE AT A TIME TO ITS TI: DEVICE. C THE PRIMARY USE OF THIS COMMAND WOULD BE TO SERIALIZE ACCESS C TO A PARTICULAR RESOURCE, E.G. A PLOTTER, WHICH HAS NO STANDARD C RSX SPOOL QUEUE, WITHOUT GOING THROUGH THE QUEUE MANAGER. C PARAMETER ISSUC=1,IEABO=-15,IEPRI=-16,IEQNF=-101,IEQEX=-102 PARAMETER IENMS=-103,IERAW=-104,IENOM=-105,IEUBS=-106 PARAMETER IEATS=-107,IEATC=-108 REAL*4 QNAME,MCRTSK,QUES(2) EXTERNAL USTP,ASTSUB INTEGER*2 IBUF(44),IESB(8),ASTS(2) BYTE BUF(83) EQUIVALENCE(IBUF(3),BUF(1)) DATA QNAME/6RSPWNSP/,MCRTSK/6RMCR.../,QUES/6RSPWNSP,6RQ DELQ/ CALL ASNLUN(2,'TI',0) CALL VS2INI(1,15) !USE LUN 1, EFN 15 FOR VS: CALL GETADR(ASTS(1),USTP) CALL GETADR(ASTS(2),ASTSUB) 100 CALL IVSAST(1,2,QUES,ASTS,) !SET ASTS 200 CALL VS2RLB(QNAME,BUF,83,ISTAT) IF(ISTAT.NE.IENOM)GOTO210 CALL ENASTR CALL STOP CALL DSASTR GOTO200 210 LEN=ISTAT IF(ISTAT.GE.ISSUC)GOTO300 IF(ISTAT.EQ.IEUBS)GOTO220 WRITE(2,211)ISTAT 211 FORMAT(' SPWNSP -- VS ERROR STATUS ',I6) STOP '-- EXITING DUE TO VS ERROR' 220 CALL VS2EXM(QNAME,0,IBUF,87,ISTAT) CALL VS2DLM(QNAME,0,ISTAT) WRITE(2,221)(BUF(I),I=5,83) 221 FORMAT(' SPWNSP -- IGNORING MESSAGE DUE TO EXCESSIVE LENGTH:' 1 /1X,79A1) GOTO200 300 CALL SPAWN(MCRTSK,,,16,,IESB,,BUF(5),LEN-4,,,ISTAT) IF(ISTAT.GT.0)GOTO310 WRITE(2,301)ISTAT,(BUF(I),I=5,LEN) 301 FORMAT(' SPWNSP -- DIRECTIVE ERROR ',O6,' ON SPAWN REQUEST OF:' 1 /1X,A1) GOTO200 310 CALL ENASTR CALL STOPFR(16,) CALL DSASTR WRITE(2,311)(BUF(I),I=5,LEN),IESB(1),IESB(2) 311 FORMAT(' >',A1/' =',2O7) GOTO200 END SUBROUTINE ASTSUB(QNAME,LEN) INTEGER*2 IBUF(3) DATA SPWNSP/6RSPWNSP/ CALL VS2RLB(QNAME,IBUF,6,ISTAT) IF(ISTAT.GT.0)GOTO1 IF(ISTAT.EQ.-106)CALL VS2DLM(QNAME,0,ISTAT) RETURN 1 IF(IBUF(3).NE.0)CALL VS2DLM(SPWNSP,IBUF(3),ISTAT) RETURN END