*DECK CSSASO USETEXT TEXTCS USETEXT TEXTSS USETEXT TXCMDCS USETEXT TXTAPSS USETEXT TXTSMCS PROC CSSASO; # TITLE - ACTION SEND TO OPERATOR # BEGIN # ** CSSASO - ACTION SEND TO OPERATOR. * * D.K. ENDO 83/03/22 * * THIS ROUTINE SENDS MESSAGES TO OTHER OPERATORS. * * PROC CSSASO * * ENTRY 1. HDRCMD[0] = COMMAND HEADER WORD. * 2. PARMS[0] = COMMAND PARAMETER BLOCK. * * EXIT 1. MESSAGE SENT TO OPERATOR. * # # **** CSSASO - XREF LIST # XREF BEGIN PROC MOVE; # MOVES A BLOCK OF CM WORDS # PROC SSBSBF; # STORE BIT FIELD # PROC SSTAQE; # ACCEPT QUEUE ENTRY # END # **** # DEF FOMTXTL # 3 #; # LENGTH OF FOM MESSAGE IN CM WORDS # DEF MSINDX # HDR$TXWCNT[0]+3 #; # INDX INTO PARM LIST FOR MS # DEF TEINDX # HDR$TXWCNT[0]+2 #; # INDX INTO PARM LIST FOR TE # ITEM CCNT; # CHARACTER COUNT # ITEM CNST1; # CONSTANT 1 # ITEM CNST2; # CONSTANT 2 # ITEM CNST3; # CONSTANT 3 # ITEM HOPFLAG B; # FLAG SET WHEN MSG IS TO BE SENT TO HOP # ITEM I; # OPERATOR CONTROL BLOCK ORDINAL # ITEM WC; # WORD COUNT # # * FOM - *FROM OPERATOR* MESSAGE, SENT ALONG WITH THE MESSAGE TO THE * OPERATOR. # ARRAY FOM [00:00] S(FOMTXTL); BEGIN ITEM FOM$TXT1 C(00,00,14) = ["FROM OPERATOR "]; ITEM FOM$TNAM C(01,24,07); ITEM FOM$TXT2 C(02,06,02) = [": "]; ITEM FOM$ZBYT U(02,18,42) = [0]; END # * SET UP WCB WORD. SET UP THE ABH WORD. IF THIS MESSAGE IS FOR THE * HOST, THEN SET THE ACN FOR THE HOP, OTHERWISE SEARCH THE OCB-S * FOR THE TERMINAL NAME AND SET THE ACN TO THE OCB ORDINAL WHEN * FOUND. # WCB$WORD[1] = 0; WCB$SMID[1] = SMID"TTEXT"; ABHWORD[1] = 0; IF PAR$PCODE[TEINDX] EQ "HO0" THEN BEGIN ABHADR[1] = HOPORD$; WCB$HAF[1] = TRUE; HOPFLAG = TRUE; I = HOPORD$; END ELSE BEGIN FOR I=HOPORD$+1 STEP 1 WHILE PAR$ELNAME[TEINDX] NQ OC$TNAM[I] AND I LQ MAXACN$ DO BEGIN END IF I LQ MAXACN$ THEN BEGIN ABHADR[1] = I; HOPFLAG = FALSE; END ELSE BEGIN GOTO ENDEXIT; END END # * ENTER NAME OF THE TERMINAL IN TEXT AND SEND THE TEXT TO THE * OPERATOR. IF THE IS MESSAGE IS TO GO TO THE HOP THEN SET THE * AUDIENCE GROUP THE HOP AND SEND IT TO THE OPERATOR RESPONSE QUEUE * TO ENTER THE MESSAGE INTO THE HISTORY QUEUE. # CNST1 = 1; CNST2 = 24; CNST3 = 42; SSBSBF(FOM,CNST1,CNST2,CNST3,B<0,42>OC$TNAM[HDR$OPORD[0]]); WCB$WC[1] = FOMTXTL + 2; SSTAQE(P,WCBUF[1],ABH[1],FOM); IF HOPFLAG THEN BEGIN ABHADR[1] = AUDGR6$; SSTAQE(P,WCBUF[1],ABH[1],FOM); ABHADR[1] = I; END # * MOVE TEXT OF MESSAGE TO THE MSG BUFFER. SEND THE TEXT TO THE * BUFFER. IF THIS MESSAGE IS TO BE SENT TO THE HOP, THEN SEND * THE MESSAGE TO THE OPERATOR RESPONSE QUEUE TO BE PUT IN THE * HISTORY BUFFER. # WC = (PAR$MSGCL[MSINDX] + 10) / 10; CCNT = (WC * 10) - PAR$MSGCL[MSINDX]; IF CCNT LS 2 THEN BEGIN WC = WC + 1; END WCB$WC[1] = WC + 2; MOVE(WC,PARMS[MSINDX+1],CSSM[1]); SSTAQE(P,WCBUF[1],ABH[1],CSSM[1]); IF HOPFLAG THEN BEGIN ABHADR[1] = AUDGR6$; SSTAQE(P,WCBUF[1],ABH[1],CSSM[1]); END # * SEND AN EMPTY TERMINAL TEXT WITH THE INPUT ALLOWED FLAG SET TO * COMPLETE THE COMMAND. # WCB$WC[1] = 2; WCB$IAF[1] = TRUE; ABHADR[1] = HDR$OPORD[0]; SSTAQE(P,WCBUF[1],ABH[1],CSSM[1]); ENDEXIT: END # CSSASO # TERM