.title INITQ CONNECT MESSAGE ID QUEUE TO TASK .IDENT /1.0/ ;.begin.doc ************************** begin.doc ; ; .c ;MODULE ; .c ;^&INITQ\& ; .nf ; .x INITQ>Defined ; Source:INITQ.MAC ; TO BECOME PART OF LIBRARY:QUEUE.OLB ; Designer :EARL LAKIA ; Author :EARL LAKIA ; Inland Steel ; Process Automation Department ; 3210 Watling St. MS 2-465 ; East Chicago, IN 46312 ; ; Date of last update: 12-NOV-1986 ; Revision level :1.1 ; ; .C ;Formal Parameter List ; Receives: ; ; LUN INTEGER*2 ; LOGICAL UNIT NUMBER ASSIGNED TO ZQ1: ; ; ; Returns: ; ; INITQ INTEGER*2 ; FUNCTION VALUE RETURN STATUS OF THE ; INIT ; ; Accesses common(s): ; ; Accesses file(s): ; ; Other modules referenced: ; .SK ; .fill ; .SK ; Description: ; .sk ; This subroutine queues an I/O to ZQ0:. The returned status ; is the directive status as the QIO that is queued never completes ; until this task exits and I/O rundown is performed. Since the ; function code that is used is a control function, this should ; allow the task to be shuffled, etc. ; .sk ; .tp 40 ; .nofill ; INTEGER*2 STATUS ! RETURN STATUS ; BYTE STATB(2) ; EQUIVALENCE(STATUS,STATB) ! BYTE ADDRESSABLE STATUS ; INTEGER*2 LUN ! LUN ASSIGNED TO ZQ0: ; INTEGER*2 QUESUC ! QUEUE SUCCESSFUL STATUS ; C ; DATA LUN/1/ ! LOGICAL UNIT NUMBER ; DATA QUESUC/1/ ; C ; C ; C ASSIGN A LUN TO THE PSEUDO DEVICE FOR THE QUEUE ; C ; CALL ASSIGN(LUN,'ZQ0:') ; C ; STATUS=INITQ(LUN) ; c ; IF(STATUS .NE. QUESUC)THEN ; TYPE *,' BAD QUEUE STATUS ON INIT' ; TYPE *,' DIRECTIVE STATUS: ',STATB(1) ; CALL EXIT ; ELSE ; TYPE *,' INIT SUCCESSFUL' ; ENDIF ; .FILL ; .SK ; Possible error codes: ; .LIST 1,' ' ; .le;Bad directive status (possibly device not mounted, etc.) ; (upper byte will be zero) ; .els ; end.doc ****************************** end.doc .PAGE .MCALL DIR$ .MCALL QIO$ ; ; 0(R5)= NUMBER OF ARGUMENTS ; 2(R5)= LUN ; ; STATUS=INITQ(lun) ; .PSECT Q$CODE,RO,I,CON INITQ:: CMP #1,(R5)+ ; CORRECT NUMBER OF ARGUMENTS BEQ 10$ ; YES TRAP <128.+80.> ; FORTRAN OTS TRAP FOR ILLEGAL NUMBER ; OF ARGUMENTS RETURN 10$: MOVB @(R5)+,DOIO+Q.IOLU ; GET LOGICAL UNIT NUMBER ; ; NOW DO THE QIO ; DIR$ #DOIO ; DO THE I/O MOVB $DSW,R0 ; SIGN EXTEND BAD DIRECTIVE STATUS RETURN ; .PSECT Q$DATA,RW,CON,D ; ; DOIO: QIO$ IO.DAC,,,,,, .END