C* SUBROUTINE READMC (BUFOUT, IEND, IMAX) C C THIS SUBROUTINE EXAMINES A MCR COMMAND LINE. THE FIRST WORD C OF THE COMMAND LINE (THE INSTALLED TASK NAME) IS IGNORED C C INPUT C IMAX = MAXIMUM LENGTH (IN BYTES) OF BUFOUT C C OUTPUT C IEND = 0 IF THE NEXT CHARACTER FOLLOWING THE TASK NAME C IS A CARRIAGE RETURN (DECIMAL 13) C = LENGTH OF REMAINING FIELD OF COMMAND LINE IF THE C NEXT CHARACTER FOLLOWING THE TASK NAME IS NOT A C CARRIAGE RETURN C IEND EXCLUDES ANY BLANKS FOLLOWING THE TASK NAME C AND THE CARRIAGE RETURN C BUFOUT = CONTAINS REMAINING FIELD OF COMMAND LINE C (STRIPPED OF BLANKS AND CARRIAGE RETURN) C C C EXAMPLE: PDS>UND PROG.LST IEND=8, BUFOUT='PROG.LST' C PDS>UND IEND=0 C C WHERE IS A CARRIAGE RETURN C C C ERROR CONDITION: IF IEND > IMAX, ERROR MESSAGE IS PRINTED C AND PROGRAM TERMINATED C C C C- C SUBROUTINE READMC (BUFOUT, IEND, IMAX) C IMPLICIT BYTE(B) DIMENSION BUFOUT(1), BTEMP(80), ITEMP(40) BYTE BUFOUT EQUIVALENCE (BTEMP,ITEMP) C DATA BLANK/ 1H / C C C GET COMMAND LINE BCRLF = 13 ! CODE FOR CARRIAGE RETURN CALL GETMCR (ITEMP, IDSW) ! GET COMMAND LINE CALL UCASE (BTEMP, 80) ! CONVERT TO UPPER CASE D WRITE(6,6030) IDSW, (BTEMP(I), I = 1, IDSW) IBL = IBLUF (BLANK, BTEMP) ! GET POSITION OF FIRST BLANK D WRITE(6,6040) IBL IF (IBL .GT. 0) GO TO 20 IEND = 0 ! NO BLANK CHARACTER, REST OF RETURN ! COMMAND LINE IS EMPTY, RETURN C C REMOVE TASK NAME FROM COMMAND STRING 20 DO 30 I = IBL, 80 BTEMP(I-IBL+1) = BTEMP(I) 30 CONTINUE ILIM = IDSW - IBL + 1 D WRITE(6,6060) (BTEMP(I), I = 1,ILIM) C C STRIP REMAINING BLANKS BTEMP(80) = BCRLF CALL STBLK (BTEMP, BTEMP, 80) D WRITE(6,6060) (BTEMP(I), I = 1,ILIM) C C GET POSITION OF 1ST CARRIAGE RETURN ICR = IBLUF (BCRLF, BTEMP) D WRITE(6,6050) ICR IEND = ICR - 1 ! CALCULATE LENGTH OF STRING IF (IEND .GT. IMAX) STOP 'COMMAND LINE TOO BIG FOR BUFFER' C C FILL BUFOUT WITH REMAINING COMMAND LINE DO 50 I = 1, IEND BUFOUT(I) = BTEMP(I) 50 CONTINUE D WRITE(6,6030) IEND, (BUFOUT(I), I = 1,IEND) D WRITE(6,6060) (BTEMP(I), I = 1,IEND) RETURN C 6030 FORMAT(' ', I5, 80A1) 6040 FORMAT(' ', 'IBL = ', I3) 6050 FORMAT(' ', 'ICR = ', I3) 6060 FORMAT(' ', 80A1) END