*DECK QTCMD
USETEXT AIPDEF
USETEXT QTRMCOM
USETEXT QTRMNIT
PROC QTCMD(CC,ADDR);
*IF DEF,IMS
#
*1DC QTCMD
*
* 1. PROC NAME AUTHOR DATE
* QTCMD E. GEE 11/01/84
*
* 2. FUNCTION DESCRIPTION.
* PROCESS COMMAND CODES FROM THE APPLICATION TO ALTER THE
* EXECUTION OF QTRM.
*
* 3. METHOD USED.
* IF QTOPEN NOT CALLED YET AND COMMAND CODE IS NOT 9,
* CALL NP$ERR TO ISSUE DAYFILE MESSAGE AND ABORT APP.
* IF COMMAND CODE VALID,
* STORE NORMAL COMPLETION RETURN CODE FIELD IN NIT.
* JUMP TO CODE TO PROCESS THE COMMAND CODE.
* 1: SET NOTIFICATION OF BREAK INDICATOR FLAG.
* CLEAR AUTOMATIC PROCESS OF USER BREAK FLAG.
* 2: SET NOTIFICATION OF USER INTERRUPT FLAG.
* 3: SET NOTIFICATION OF INACTIVE CONNECTION FLAG.
* 4: SET SUPPORT NAM K-DISPLAY FLAG.
* 5: SET NOTIFICATION OF INITIAL CONNECTION REQUEST FLAG.
* 6: STORE ADDRESS IN PARM-ADDR FIELD OF NIT.
* 7: SET AUTOMATIC PROCESS OF USER BREAK FLAG.
* CLEAR NOTIFICATION OF BREAK INDICATOR FLAG.
* 8: IF APP WANTS TO POLL INDIVIDUAL CONNECTIONS FOR DATA,
* SET CONNECTION POLLING FLAG.
* ELSE (APP WANTS TO REVERT TO POLLING ALL CONNECTIONS),
* CLEAR CONNECTION POLLING FLAG.
* 9: SET NO ABORT IF NETON REJECTED FLAG.
* 10: SET NO ABORT IF ERR/LGL RECEIVED FLAG.
* 11: SUPPORT ONLY SPECIFIED DEVICE TYPES.
* 12: PROCESS PRU/ON SUP MSG ONLY FOR SPECIFIED DEVICE TYPES.
* 13: CONVERT PM MESSAGES.
* ELSE (INVALID COMMAND CODE VALUE),
* STORE QTCMD REJECT RETURN CODE IN NIT.
* STORE REASON FOR REJECT IN SEC-RETURN-CODE FIELD.
* RETURN.
*
* 4. ENTRY CONDITIONS.
* CC COMMAND CODE
* ADDR ADDRESS TO STORE IN PARM-ADDR FIELD
*
* 5. NORMAL EXIT CONDITIONS.
* NIT$RC OK RETURN CODE
*
* 6. ABNORMAL EXIT CONDITIONS.
* NIT$RC QTCMD REJECT RETURN CODE
* NIT$S$RC REASON FOR QTCMD REJECTING CALL
*
* 7. COMDECKS AND SYMPL TEXT USED.
* AIPDEF AIP DEFINITIONS
* NP$CRT CDC COPYRIGHT
* QTRMCOM QTRM VARIABLES
* QTRMNIT NIT
*
* 8. ROUTINES AND OVERLAYS CALLED.
* NP$ERR ISSUE ERROR MESSAGE AND ABORT APP
*
* 9. DAYFILE MESSAGES OR OTHER IMPORTANT INFORMATION.
* *** NETWORK APPLICATION ABORTED, RC = 75. ***
* *** QTCMD: REQUEST INVALID BEFORE QTOPEN. ***
*
#
*ENDIF
# CONTROL DEFINITIONS
#
CONTROL PRESET;
CONTROL PACK;
CONTROL DISJOINT;
CONTROL INERT;
CONTROL FASTLOOP;
*CALL NP$CRT
#
INPUT VARIABLES
#
ITEM ADDR; # ADDRESS TO STORE IN PARM-ADDR FIELD #
ITEM CC; # COMMAND CODE #
#
ROUTINES CALLED
#
XREF
BEGIN
PROC NP$ERR; # DAYFILE ERROR MESSAGE AND ABORT APP #
END
#
LOCAL VARIABLES
#
DEF MINCC#1#; # MINIMUM COMMAND CODE VALUE #
DEF MAXCC#13#; # MAXIMUM COMMAND CODE VALUE #
SWITCH SWTCH$CC ,CC$1,CC$2,CC$3,CC$4,CC$5,CC$6,CC$7,CC$8,
CC$9,CC$10,CC$11,CC$12,CC$13
;
#**********************************************************************#
CONTROL EJECT;
#
EXECUTABLE CODE BEGINS HERE
#
BEGIN
IF (NOT NETON$STATUS) AND # APP HAS NOT NETTED ON YET #
(CC NQ 9 ) # COMMAND CODE IS NOT 9 #
THEN # QTOPEN HAS NOT BEEN CALLED #
BEGIN
NP$ERR("75"); # ISSUE ERROR MESSAGE AND ABORT APP #
END
IF NETON$STATUS
THEN # QTOPEN MUST ALREADY HAVE BEEN CALLED #
BEGIN # SO NIT ADDRESS MUST ALREADY EXIST #
P<NIT> = NIT$ADDR; # ADDRESS OF NETWORK INFORMATION TABLE #
NIT$RC[0] = S"OK"; # INITIALIZE RETURN CODE TO SUCCESSFUL COM#
END
IF (CC GQ MINCC) AND
(CC LQ MAXCC)
THEN # VALID COMMAND CODE #
BEGIN
GOTO SWTCH$CC[CC];
CC$1: # NOTIFICATION OF BREAK INDICATOR MARK #
BEGIN
BREAKMARK = TRUE; # SET FLAG TO NOTIFY APP ABOUT BI/MARK #
AUTOBREAK = FALSE; # CLEAR AUTO BREAK PROCESSING FLAG #
GOTO CC$END;
END
CC$2: # NOTIFICATION OF USER/APPL INTERRUPTS #
BEGIN
USERINTR = TRUE; # SET FLAG TO NOTIFY APP ABOUT INTR/USR #
GOTO CC$END;
END
CC$3: # NOTIFICATION OF INACTIVE CONNECTIONS #
BEGIN
INACTIVE = TRUE; # SET FLAG TO NOTIFY APP ABOUT FC/INACT #
GOTO CC$END;
END
CC$4: # APPLICATION SUPPORTS NAM K-DISPLAY #
BEGIN
KDISPLAY = TRUE; # SET FLAG FOR SUPPORTING NAM K-DISPLAY #
GOTO CC$END;
END
CC$5: # NOTIFICATION OF CONNNECTION REQUESTS #
BEGIN
CONINIT = TRUE; # SET FLAG TO NOTIFYING APP ABOUT CON/REQ #
GOTO CC$END;
END
CC$6: # STORE ADDRESS IN PARM-ADDR FIELD OF NIT #
BEGIN
NIT$PARMADR[0] = LOC(ADDR); # ADDR TO STORE IN PARM-ADDR #
GOTO CC$END;
END
CC$7: # AUTOMATIC PROCESSING OF USER BREAKS #
BEGIN
AUTOBREAK = TRUE; # SET FLAG FOR AUTO USER BREAK PROCESSING #
BREAKMARK = FALSE; # CLEAR NOTIFICATION OF BREAK MARK FLAG #
GOTO CC$END;
END
CC$8: # SELECT CONNECTION FOR POLLING DATA #
BEGIN
IF ADDR EQ 1
THEN # APP WANTS TO SELECT DATA FROM CONNECTION#
BEGIN
CONPOLL = TRUE; # SET FLAG FOR NETGET PROCESSING #
END
ELSE # APP WANTS TO REVERT BACK TO LIST PROCESS#
BEGIN
CONPOLL = FALSE; # CLEAR FLAG TO REVERT TO CALLING NETGETL #
END
GOTO CC$END;
END
CC$9: # DO NOT ABORT IF NETON IS REJECTED #
BEGIN
NOABTNETONA = TRUE; # SET FLAG TO NOT ABORT IF NETON REJECT #
GOTO CC$END;
END
CC$10: # DO NOT ABORT IF ERR/LGL IS RECEIVED #
BEGIN
NOABTERRLGL = TRUE; # SET FLAG TO NOT ABT IF ERR/LGL RECEIVE#
GOTO CC$END;
END
CC$11: # SUPPORT ONLY SPECIFIED DEVICE TYPES #
BEGIN
SUPDTW[0] = ADDR; # SET DEVICE TYPE FLAGS #
GOTO CC$END;
END
CC$12: # PROCESS PRU/ON SUP MSG ONLY FOR #
# SPECIFIED DEVICE TYPES. #
BEGIN
PRUDTW[0] = ADDR; # SET DEVICE TYPES FOR PRU/ON PROCESSING #
PRUTRAA[0] = FALSE;# PRU INTERFACE NOT SUPPORTED FOR INTRAHST#
PRUCON[0] = FALSE; # PRU INTERFACE NOT SUPPORTED FOR CONSOLE #
GOTO CC$END;
END
CC$13: # CONVERT PM MESSAGES #
BEGIN
IF (ADDR LS 0) OR # MINIMUM CONVERSION CODE #
(ADDR GR 2) # MAXIMUM CONVERSION CODE #
THEN # INVALID CONVERSION CODE WAS SPECIFIED #
BEGIN
NIT$RC[0] = NITRTC"QTCMDREJ"; # QTCMD REJECT RETURN CODE #
NIT$S$RC[00] = NITSRTC"BADCONVC"; # BAD CONVERSION CODE #
END
ELSE # VALID CONVERSION CODE WAS SPECIFIED #
BEGIN
PMCONV = ADDR; # SET TYPE OF CONVERSION FOR PM MESSAGES #
END
GOTO CC$END;
END
CC$END: # END OF CASE STATEMENT #
END
ELSE # BAD COMMAND CODE WAS SPECIFIED #
BEGIN
NIT$RC[0] = S"QTCMDREJ"; # QTCMD REJECT RETURN CODE #
NIT$S$RC[0] = S"UNRECOG"; # BAD COMMAND CODE #
END
RETURN;
END
TERM