.TITLE CANALL -- CANCEL ALL COPIES OF SCHEDULED TASK .IDENT -000000- ; ;+ ; ABSTRACT: CANALL ; MCR FUNCTION TO CANCEL ALL COPIES OF A SCHEDULED TASK ON ; ALL TERMINALS SO THAT ...CAN NEED NOT BE RUN ON ALL TERMINALS. ; ; SYNTAX: ; MCR>CNA TASKNAME ; ---- ; ; RESTRICTIONS: ; PRIVILEGED FUNCTION ; ; AUTHOR: ; BRUCE C. WRIGHT ; CLINICAL EPIDEMIOLOGY LABORATORY ; DUKE UNIVERSITY MEDICAL CENTER ; DURHAM, N. C. 27710 ; ;- .MCALL DIR$,CSRQ$,QIOW$,GMCR$,EXIT$S CR = 15 DSW = 0 BEGIN:: DIR$ #$GMCR TST @#DSW ;DID THE GET MCR COMMAND LINE COMPLETE? BLT EXIT ;NO, EXIT. MOV .CRTSK,R4 ;GET OUR ATL NODE MOV A.TI(R4),R5 ;GET OUR PUD ADDRESS. BIT #UT.PR,U.PR(R5) ;IS THIS TTY PRIVILEGED? BEQ ILLFCN ;PRIVILEGE VIOLATION IF NOT MOV #$GMCR+G.MCRB,R0;R0 -> MCR COMMAND LINE 5$: CMPB (R0)+,#' ;IS THIS CHAR A ? BEQ 10$ ;SKIP OVER BLANKS IF SO. CMPB -1(R0),#CR ;IS IT ? BEQ ERROR ;SYNTAX ERROR IF SO. BR 5$ ;AND GET NEXT CHAR. 10$: CMPB (R0)+,#' ;IS THIS CHAR A ? BEQ 10$ ;LOOP IF SO. DEC R0 ;POINT TO FIRST NON-BLANK CMPB (R0),#CR ;IS IT ? BEQ ERROR ;SYNTAX ERROR IF SO MOV #1,R1 ;"." IS A LEGAL RAD50 CHARACTER. JSR PC,$CAT5 ;CONVERT CHARS. MOV R1,$CSRQ+C.SRTN ;SET TARGET TASK NAME. BCS DIRECT ;DI DIRECTIVE IF SCAN TERMINATED. MOV #1,R1 ;"." IS A LEGAL RAD50 CHARACTER. JSR PC,$CAT5 ;CONVERT RAD50 MOV R1,$CSRQ+C.SRTN+2;SET SECOND PART OF TASK NAME. DIRECT: MOV .PUDBA,R1 ;POINT TO BEGINNING OF PUD. LOOP: BITB #UC.TTY,U.C1(R1);IS THIS A TTY? BEQ 10$ ;SKIP IF NOT. MOV R1,A.TI(R4) ;SET OUR TI ADDRESS. DIR$ #$CSRQ ;CANCEL SCHEDULED REQUESTS. MOV R5,A.TI(R4) ;RE-SET TI ADDRESS FOR ANY MESSAGES. TST @#DSW ;TEST RETURN CODE. BLT EXIT ;EXIT IF BAD. 10$: ADD #U.SZ,R1 ;POINT TO NTXT PUD ADDRESS. CMP R1,.PUDEA ;AT END OF PUD? BLO LOOP ;AND LOOP OVER ALL OF PUD. EXIT: MOV @#DSW,R1 ;GET NUMBER. BGT FINI ;LEAVE IF NO ERROR. CMP R1,#-2 ;IS IT TASK NOT INSTALLED? BEQ TNINS MOV #NUMBR,R0 ;POINT TO OUTPUT BUFFER. CLR R2 ;INDICATE LEADING ZERO SUPPRESSION. CALL $CBDSG ;CONVERT TO DECIMAL. SUB #ERRMSG,R0 ;COMPUTE LENGTH OF ERROR. MOV R0,$QIO+Q.IOPL+2;SET LENGTH. DIR$ #$QIO ;DO I/O FINI: EXIT$S ERROR: DIR$ #$ERROR BR FINI ILLFCN: DIR$ #$PRIV BR FINI TNINS: DIR$ #$TNINS BR FINI $QIO: QIOW$ IO.WVB,1,1,,,, $ERROR: QIOW$ IO.WVB,1,1,,,, $PRIV: QIOW$ IO.WVB,1,1,,,, $TNINS: QIOW$ IO.WVB,1,1,,,, ERRMSG: .ASCII 'CNA -- I/O ERROR, CODE= ' NUMBR: .ASCII / / SYNERR: .ASCII /CNA -- SYNTAX ERROR/ SYNLEN = .-SYNERR PRVERR: .ASCII /CNA -- ILLEGAL FUNCTION FOR NON PRIVILEGED TERMINAL/ PRVLEN = .-PRVERR INSERR: .ASCII /CNA -- TASK NOT INSTALLED/ INSLEN = .-INSERR .EVEN $CSRQ: CSRQ$ $GMCR: GMCR$ .END BEGIN