ASMB,R,L,C
      HED "GRUPM" GET RUN PARAMETERS FROM CALLER 7-76 (DLB) 
*     NAM GRUPM,7 PRE-REL 7-21-76 (DLB) 
*     NAM GRUPM,7 09570-16496 REV. A 761013 
      NAM GRUPM,7 PRE-REL 771128 (DLB)
      ENT GRUPM 
      EXT EXEC,PAU.E,NAMR,REIO,.ENTR
      SPC 1 
* 
*-------------------------------------------------------- 
* 
*     RELOC.       09570-16496
*     SOURCE       09570-18496
* 
*     D. L. BASKINS      13 OCT 76 REV. A 
* 
*-------------------------------------------------------- 
A     EQU 0 
B     EQU 1 
      SPC 1 
*  PURPOSE: 
*    TO GET A "RUN STRING" FROM THE SCHEDULING PROGRAM (I.E. FMGR)
*  CALLED:
*           CALL GRUPM(IBUF,IENDCR,ISTRCR,IASKMS,MESLN) 
*  WHERE: 
*     IBUF   = 40 WORD BUFFER WHERE THE CALLERS STRING WILL BE STORED.
*     ISTRCR = THE START CHARACTOR IN BUFFER TO BEGIN PARSING.
*     IENDCR = THE LAST CHARACTOR NUMBER STORED IN STRING BUFFER (IBUF) 
*     IASKMS = THE MESSAGE BUFFER OUTPUTTED TO OPERATOR IF A STRING 
*              BUFFER WAS NOT PASSED BY THE CALLING PROGRAM.
*     MESLN  = THE NEGATIVE NUMBER OF CHARACTORS OR POSITIVE
*              NUMBER OF WORDS IN "IASKMS"
*  EXTERNALS USED:
*     PAU.E  = THE LOGICAL UNIT OF TERMINAL FOR OUTPUTTING MESSAGE. 
*  TEST PROGRAM 
*FTN,L
*      PROGRAM TEST 
*      DIMENSION IBUF(40),IASKMS(16)
*      DATA IASKMS/2HIN,2HPU,2HT ,2HTH,2HE ,2HST,2HRI,2HNG,2H O,2HF 
*     1,2H Y,2HOU,2HR ,2HDR,2HEA,2HMS/,MESLN/16/
*      LU = ITMLU(IBATCH) 
*      CALL GRUPM (IBUF,IENDCR,ISTRCR,IASKMS,MESLN) 
*      LEN = (IENDCR+1)/2 
*      LENST = ISTRCR-1 
*      WRITE (LU,100) LENST,(IBUF(I),I=1,LEN) 
*  100 FORMAT("THE PASSED STRING WAS AS FOLLOWS, MINUS "I2" CHARACTORS" 
*     1,/,40A2) 
*      STOP 
*      END
*      END$ 
*  NOTES: 
*      THE STRING CAN COME FROM TWO PLACES.  ONE IS FROM THE OPERATOR.
*      IN THIS CASE THE "ISTRCR" IS RETURNED = 1.  TWO IS FROM THE CALLING
*      PROGRAM SUCH AS THE "FMGR".  IN THIS CASE THE PASSED STRING IS 
*      PASSED THUR SYSTEM MEMORY WITH A ":RUN,PROGM,," IN FRONT OF THE
*      BUFFER OF INTEREST. THEREFORE THIS SUBROUTINE WILL RETURN A START
*      CHARACTOR (ISTRCR) = 13 SO THE CALL MAY BEGIN HIS PARSE AT THE 
*      4TH PARAMETER DELIMITED BY COMMAS. THE WHOLE STRING IS LEFT IN 
*      "IBUF" SO THAT THE CALLER MAY PRINT IT OUT IF DESIRED. 
      SPC 1 
IBUF  NOP           DESTINATION BUFFER
IENDR NOP           BUFFER LENGTH IN CHARACTORS 
ISTCR NOP           STARTING CHARACTOR NUMBER 
IASKM NOP           BUFFER OF OPERATOR MESSAGE
MESLN NOP           MESSAGE BUFFER LENGTH 
GRUPM NOP           ENTRY POINT 
      JSB .ENTR 
      DEF IBUF      TOP OF STACK
      CLA,INA       PRESET START CHAR AS ONE
      STA START     AND SET UP FOR PARSE ROUTINE
      LDA PAU.E     GET THE MESSAGE LOGICAL UNIT #
      IOR O400      MERGE IN THE PRINT BIT
      STA LGLU      SAVE FOR REIO CALLS 
      JSB EXEC      GET STRING FROM SYSTEM
      DEF *+5 
      DEF NA14      NO ABORT 14 
      DEF O1        READ REQUEST
      DEF IBUF,I    INPUT BUFFER
      DEF DM80      BUFFER LENGTH IN CHARACTORS 
      CLB           ABORTED!!, MAKE TLOG = 0
      STB IENDR,I   SAVE LAST CHARACTOR NUMBER
      JSB PARSE     GO PARSE THE PASSES BUFFER
      JSB PARSE     IGNORE THE 1ST TWO PARAMETERS 
      STB ISTCR,I   SET START CHAR IN CASE OF 1 COMMA 
      JSB PARSE     GET 3RD PARAMETER 
      LDA PARMB     GET PARAMETER VALUE 
      SZA           IS PARAMETER = 0? 
      CPA PAU.E     OR IS PARAMETER = TERMINAL LU?
      RSS           GO GET NEXT ONE & CHECK IF HAS RUN STRING 
      JMP CKFME     MUST BE GOOD PARAMETER, CHECK FUTHER
      STB ISTCR,I   TWO COMMAS, SET NEW STARTING CHARACTOR
      SPC 1 
*  NOW CHECK IF THERE IS ANY DATA IN THE RUN STRING 
      SPC 1 
CKFMD JSB PARSE     NOW GET NEXT PARAMETER
CKFME LDA PARMB+3   GET THE PARAMETER TYPE
      SZA,RSS       CHECK IF CONTAINS DATA? 
      JMP CKFMD     NO, CHECK IF NEXT PARAMETER CONTAINS DATA 
      JMP DONE      YES, EXIT IN BATCH MODE 
      SPC 1 
ASK   JSB REIO      NO, GO ASK OPERATOR 
      DEF *+5 
      DEF O2        WRITE OUT PROMPT MESSAGE
      DEF LGLU      TERMINAL LU WITH PRINT BIT
      DEF IASKM,I   MESSAGE BUFFER
      DEF MESLN,I   MESSAGE LENGTH
      JSB REIO      NOW GET ANSWER
      DEF *+5 
      DEF O1        READ
      DEF LGLU
      DEF IBUF,I    INPUT BUFFER
      DEF DM80      BUFFER LENGTH IN CHARACTORS 
      STB IENDR,I   SAVE LENGTH FOR CALLER
      CLA,INA       PRESET THE START CHARACTOR TO (1) 
      STA ISTCR,I   IN CALLERS PARAMETERS 
DONE  JMP GRUPM,I   YES, RETURN 
      SPC 1 
*  PARSE THE NEXT PARAMETER IN RUN STRING 
      SPC 1 
START NOP           CURRENT STARTING CHARACTOR NUMBER 
PARSE NOP           ENTRY START & END CHARACTOR ALREADY SET 
      JSB NAMR      USE THE SYSTEM PARSE ROUTINE
      DEF *+5 
      DEF PARMB     OUTPUT PARSE BUFFER (10 WORDS)
      DEF IBUF,I    INPUT STRING BUFFER 
      DEF IENDR,I   LENGTH OF STRING BUFFER 
      DEF START     AND THE STARTING CHARACTOR
      SSA           CHECK IF NO MORE DATA 
      JMP ASK       NO DATA, GO ASK OPERATOR FOR INFO 
      LDB START     GET STARTING CHARACTOR NUMBER FOR 
      JMP PARSE,I   NEXT PARAMETER IN B-REG 
      SPC 1 
O1    OCT 1 
O2    OCT 2 
O400  OCT 400 
DM80  DEC -80 
NA14  ABS 100000B+14
LGLU  NOP 
PARMB REP 10        TEN WORDS IN PARSE BUFFER 
      NOP 
      END 
                                                                                                                                        