*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<CNQ>,WCBUF[1],ABH[1],FOM);
IF HOPFLAG
THEN
BEGIN
ABHADR[1] = AUDGR6$;
SSTAQE(P<ORQ>,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<CNQ>,WCBUF[1],ABH[1],CSSM[1]);
IF HOPFLAG
THEN
BEGIN
ABHADR[1] = AUDGR6$;
SSTAQE(P<ORQ>,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<CNQ>,WCBUF[1],ABH[1],CSSM[1]);
ENDEXIT:
END # CSSASO #
TERM