cdc:nos2.source:opl871:send
Table of Contents
SEND
Table Of Contents
- [00005] SEND - SEND MESSAGE TO TERMINAL.
- [00132] DOL - DETERMINE OPTIONS FROM LIST.
- [00223] FEL - FORCE END OF LINE.
- [00334] RST - RETURN STATUS TO TASK.
Source Code
- SEND.txt
- IDENT SEND
- ENTRY SEND
- ENTRY ABH.
- SYSCOM B1
- TITLE SEND - SEND MESSAGE TO TERMINAL.
- *COMMENT SEND - SEND MESSAGE TO TERMINAL.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- SPACE 4,10
- ***** SEND - SEND MESSAGE TO TERMINAL.
- * W.E. MARTIN. 78/01/20.
- SPACE 4,10
- * COMMON DECK.
- *CALL COMKMAC
- *CALL COMSNCD
- *CALL COMSPRD
- VFD 42/0LSEND,18/SEND
- SPACE 4,55
- *** CALL FORMAT -
- *
- *
- * FORTRAN EXTENDED -
- *
- * CALL SEND(MESSAGE,LENGTH,TERMINAL,CEASE,OUTPUT,BLOCK,STATUS)
- *
- * COBOL -
- *
- * ENTER SEND USING MESSAGE,TERMINAL,CEASE,OUTPUT,BLOCK,STATUS,
- * LENGTH.
- *
- * WHERE - MESSAGE= LOCATION OF MESSAGE.
- *
- * LENGTH = LENGTH OF MESSAGE EXPRESSED IN CHARACTERS.
- *
- * TERMINAL = TERMINAL NAME. IF OMMITTED OR ZERO, SEND
- * TO TERMINAL THAT ORIGINATED TRANSACTION.
- * ONE TO SEVEN CHARACTERS, LEFT JUSTIFIED.
- *
- * CEASE = FLAG WHOSE NON-ZERO VALUE IMPLIES TASK IS
- * COMPLETE AT TERMINATION OF SEND. ZERO IS
- * ASSUMED.
- *
- * OUTPUT = 0 IF THIS IS THE LAST SEND TO BE DONE
- * FOR THIS TRANSACTION. NON-ZERO IMPLIES THAT
- * MORE SENDS WILL BE EXECUTED FROM THIS TASK.
- * DEFAULT = 0 (OPTIONAL PARAMETER).
- *
- * BLOCK = OPTIONAL PARAMETER WHICH IF SPECIFIED
- * TASK DESIRES NAM APPLICATION BLOCK NUMBER
- * FOR RECOVERY PURPOSES.
- *
- * STATUS = FLAG TO INDICATE A SEND WITH RECALL.
- * IF STATUS IS NON-ZERO,
- * CONTROL IS NOT RETURNED TO THE TASK UNTIL
- * THE NETWORK HAS ACKNOWLEDGED THE RECEIPT AND
- * DISPOSITION OF THE BLOCK. THE SUPERVISORY
- * MESSAGE IS THEN CONVERTED TO A *TAF*
- * MESSAGE NUMBER AND RETURNED TO (STATUS).
- *
- * PARAMETER FORMAT - NUMERIC DATA -
- * FORTRAN EXTENDED - INTEGER.
- * COBOL - COMPUTATIONAL-1.
- *
- * NOTE - THE NETWORK REQUIRES THAT *EOL* CHARACTERS BE
- * CONSIDERED MORE AS LINE SEPARATORS THAN LINE TERMINATORS.
- * THE *EOL* MUST BE ACCOUNTED FOR IN THE *TLC* FOR THE BLOCK
- * BEING SENT, AND THIS MUST BE DONE AT THE TASK LEVEL PRIOR
- * TO ACTUALLY ISSUING THE *SEND* REQUEST.
- SEND SUBR ENTRY/EXIT
- SX6 A0 SAVE (A0)
- BX7 X7-X7 CLEAR COBOL CALL FLAG
- SA6 SENG
- * CLEAR STORAGE OF LOCAL VARIABLES.
- SB1 1
- SA7 SENH
- SX6 X1 CHECK COBOL CALL
- MX4 3 (X4) = COBOL ARGUMENT MASK
- SA7 SENF STATUS
- SA6 SENJ
- SA7 SENK OUTPUT FLAG
- SX7 A1 SAVE FWA OF PARAMETER LIST
- BX0 X1
- SA7 SENE
- SB6 B1 SET ZERO CHECK FLAG TO INTEGER
- BX7 X1-X6
- SA3 A1+B1 READ LENGTH OR ADDRESS OF TERMINAL NAME
- LX4 20-59
- ZR X7,SEN1 IF NOT COBOL COMPUTATIONAL-1 ARGUMENT
- * DETERMINE COBOL MESSAGE LENGTH FROM PARAMETER.
- LX7 -36 GET MESSAGE LENGTH
- MX5 -12
- BX2 -X5*X7
- BX5 X4*X3 EXTRACT COBOL USAGE
- LX5 -18
- MX7 1 SET COBOL CALL FLAG
- SB6 X5-4 ZERO IF COMP-1 USAGE
- SA7 SENH
- BX7 X2 SAVE MESSAGE LENGTH
- SA7 SENI
- * PROCESS PARAMETERS.
- SEN1 RJ DOL DETERMINE OPTIONS FROM PARAMETER LIST
- SA7 SENB+1 STORE TERMINAL NAME
- BX3 X3+X4 INSERT ALTERNATE TERMINAL FLAG
- SB5 X5 (B5) = CEASE FLAG
- SA1 SENJ RESTORE FWA OF MESSAGE
- SA2 SENI RESTORE MESSAGE LENGTH
- RJ FEL FORCE END OF LINE
- SEND SENB
- * RETURN STATUS TO TASK AND DETERMINE EXIT CONDITIONS.
- RJ RST RETURN STATUS TO TASK
- PL X6,SENDX IF NO ERROR - RETURN
- * ABORT TASK DUE TO FAULTY SUPERVISORY MESSAGE.
- SA1 SEND READ TRACE-BACK WORD
- MX0 30
- LX1 30
- SA1 X1-1 SET TRACE-BACK WORD INTO BUFFER
- BX6 -X0*X1
- SA6 SENB
- ARGERR SENB EXIT TO EXECUTIVE
- DOL SPACE 4,25
- ** DOL - DETERMINE OPTIONS FROM LIST.
- *
- * DETERMINE OPTIONS FROM LIST PARSES THE PARAMETER LIST
- * OF THE USER TASK, DETERMINING WHAT OPTIONS THE USER
- * DESIRES. EACH OPTION IS DETERMINED BY THE EXISTENCE OF
- * THE PARAMETER AND ONCE THE LIST IS TRUNCATED, ALL
- * OPTIONS WHICH LIE TO THE RIGHT OF THAT PARAMETER ARE
- * GIVEN DEFAULT VALUES.
- *
- * ENTRY (X2) = MESSAGE LENGTH.
- * (X3) = ADDRESS OF CURRENT PARAMETER.
- * (X7) = NON-ZERO IF COBOL CALL.
- * (A3) = ADDRESS OF CURRENT LIST PARAMETER.
- *
- * EXIT (X3) = OPTIONS ARE FLAGGED IN UPPER SIX BITS.
- * (X6) = ALTERNATE TERMINAL FLAG - IF PRESENT.
- * (X7) = ALTERNATE TERMINAL NAME - ZERO IF NONE.
- * (SENF) = ADDRESS OF LOCATION REQUESTING NETWORK STATUS.
- *
- * USES A - ALL.
- * B - 4, 7.
- * X - ALL.
- *
- * CALLS ZFN.
- DOL SUBR ENTRY/EXIT
- NZ X7,DOL1 IF COBOL CALL
- SA2 X3 READ LENGTH
- SX6 X2 SAVE MESSAGE LENGTH
- SA3 A3+B1 READ ADDRESS OF TERMINAL NAME
- UX2 X2 ASSUME MIXED PARAMETERS
- SA6 SENI
- DOL1 BX5 X5-X5 ASSUME CEASE = 0
- SX4 B0
- ZR X3,DOL5 IF NO TERMINAL NAME, CEASE FLAG, OUTPUT
- SA4 X3 READ TERMINAL NAME
- UX1,B4 X4 COBOL COMPUTATIONAL-1 ARGUMENT
- ZR X1,DOL2 IF NO TERMINAL NAME
- MX0 42
- BX1 X0*X4
- RJ ZFN ZERO FILL NAME
- DOL2 BX4 X1 SAVE TERMINAL NAME
- SA3 A3+B1 READ CEASE FLAG PARAMETER
- ZR X3,DOL5 IF NO CEASE FLAG AND OUTPUT FLAG
- SA5 X3 READ CEASE FLAG
- SA3 A3+B1 OUTPUT FLAG ADDRESS
- ZR X3,DOL5 IF NO OUTPUT FLAG
- SB7 A3 SAVE ADDRESS OF CURRENT PARAMETER.
- MX7 1
- SA3 X3 OUTPUT FLAG
- UX3 X3
- ZR X3,DOL3 IF LAST SEND
- MX3 1 (X3) = STAGING REGISTER FOR *SEND* OPTIONS
- LX3 57-59 OUTPUT FLAG
- DOL3 SA1 B7+B1 NAM APPLICATION BLOCK FLAG
- ZR X1,DOL5 IF NO BLOCK FLAG
- LX7 56-59 SET *B* FIELD IN HEADER
- SX6 X1 SAVE BLOCK PARAMETER ADDRESS
- SA2 X6 READ BLOCK NUMBER
- SA6 SENK
- UX2 X2
- NZ X2,DOL4 IF (BLOCK) .NE. ZERO
- BX3 X7+X3
- DOL4 SA1 A1+B1 READ STATUS PARAMETER
- SA2 X1
- ZR X1,DOL5 IF STATUS NOT SPECIFIED
- UX2 X2
- ZR X2,DOL4.1 IF (STATUS) .EQ. ZERO
- LX7 55-56 SET *R* FIELD IN HEADER
- BX3 X3+X7
- SX7 X1 SAVE STATUS PARAMETER ADDRESS
- SA7 SENF
- DOL4.1 SA2 SENH COBOL CALL FLAG
- PL X2,DOL5 IF NOT COBOL CALL
- SA1 A1+1 READ LENGTH PARAMETER
- ZR X1,DOL5 IF PARAMETER NOT PRESENT
- SA1 X1 SAVE COBOL MESSAGE LENGTH
- UX6 X1
- SA6 SENI
- DOL5 BX7 X4
- MX4 1
- ZR X7,DOL6 IF NO ALTERNATE TERMINAL DECLARED
- BX3 X4+X3 SET ALTERNATE TERMINAL FLAG
- DOL6 LX4 54-59 SET APPLICATION BLOCK HEADER FLAG
- BX3 X4+X3
- ZR X5,DOLX IF NOT CEASE, RETURN
- LX4 58-59-54+59
- BX3 X4+X3 SET CEASE BIT IN SEND PARAMETER BLOCK
- EQ DOLX RETURN
- FEL SPACE 4,20
- ** FEL - FORCE END OF LINE.
- *
- * FORCE *EOL* FOR TELEX COMPATIBILITY. THIS CODE SEGMENT
- * IS UNNECESSARY FOR *NAM* TELE-COMMUNICATIONS, SINCE THE
- * EXACT CHARACTER COUNT IS REQUIRED IN THE *ABH*, TO INCLUDE
- * THE UNIT SEPARATOR, WILL ACCOMPANY ALL *SEND* REQUESTS TO
- * THE NETWORK.
- *
- * ENTRY (X1) = FWA OF MESSAGE.
- * (X2) = USER DECLARED CHARACTER COUNT AFTER TRUNCATION.
- * (X3) = HEADER OF WORD ONE OF *SEND* PARAMETER BLOCK.
- *
- * EXIT (B3) = CHARACTERS IN LAST WORD OF MESSAGE.
- * (SENB - SENB+4) UPDATED.
- * (ABH) UPDATED BY (TLC).
- *
- * USES A - 1, 2, 3, 6, 7.
- * B - 3, 4, 7.
- * X - ALL.
- FEL SUBR ENTRY/EXIT
- SX5 X2+9 COMPUTE NUMBER OF WORDS IN MESSAGE
- SX4 10
- BX6 X1 INSERT MESSAGE ADDRESS
- IX5 X5/X4 NUMBER OF WORDS
- LX6 30 INSERT NUMBER OF WORDS INTO BLOCK HEADER
- BX7 X6+X5
- BX7 X7+X3 INSERT SEQUENCE, BLOCK FLAG
- SA7 SENB STORE ARGUMENT WORD
- SA3 ABH.
- LX3 59-22
- PL X3,FEL2 IF *ACT* .NE. *DISPLAY*
- SX3 10
- IX0 X3*X5
- IX0 X0-X2
- IX7 X3-X0
- IX5 X1+X5 (X5) = LAST WORD ADDRESS OF MESSAGE
- SA3 X5-1 SAVE LWA OF MESSAGE
- BX6 X3
- SB4 B0 (B4) = 0 WHEN (X7) = 0
- SA6 SENC
- SA2 A3+B1
- BX6 X2
- SA6 A6+B1
- SX6 A3
- SA6 SENL LWA OF MESSAGE
- SA2 SENB
- ZR X0,FEL1 IF LAST WORD IS FULL
- * REMOVE TRAILING CHARACTERS FROM LAST WORD.
- SB4 X7-9 (B4) = NUMBER OF CHARACTERS IN WORD
- SB3 X0 (B3) = NUMBER OF TRAILING CHARACTERS
- LX7 X0,B1 TRAILING CHARACTERS*2
- LX0 2 MULTIPLY BY 4
- IX7 X0+X7 NUMBER OF TRAILING BITS
- SB7 X7-59
- MX4 1
- LX4 X4,B7
- BX7 X4*X3 STRIP TRAILING CHARACTER FIELDS
- SA7 A3
- SA3 SENI INCREMENT TLC TO INCLUDE UNIT SEPARATOR
- SX7 X3+B3
- SA7 A3
- FEL1 NZ B4,FEL2 IF FEWER THAN NINE CHARACTERS
- * PROCESS CASE WHERE LAST WORD IS FULL - REQUIRING EXTRA WORD
- * FOR EOL.
- SA2 SENB
- SX6 B1
- IX6 X2+X6 INCREMENT WORD COUNT
- SA6 A2
- BX6 X6-X6
- SA6 X5+
- SA3 SENI INCREMENT TLC TO INCLUDE UNIT SEPARATOR
- SB3 10
- SX6 X3+B3
- SA6 A3
- * CONSTRUCT ABH FOR *SEND*.
- FEL2 MX0 -12 (X0) = *ABN* AND *TLC* MASK
- BX7 X7-X7
- SA1 SENK READ BLOCK PARAMETER ADDRESS
- SB3 B4 (B3) = NUMBER OF CHARACTERS IN LAST WORD
- SA3 ABH. READ CURRENT *ABH*
- MX6 6
- ZR X1,FEL3 IF NO BLOCK OR STATUS PARAMETERS PRESENT
- SA1 X1
- SX7 X1 APPLICATION BLOCK NUMBER
- ZR X7,FEL3 IF NO BLOCK NUMBER
- LX0 41-11
- BX3 X0*X3 INSERT BLOCK NUMBER INTO *ABH*
- LX7 41-17
- LX0 11-41
- FEL3 BX7 X7+X3
- BX7 X0*X7 SET *TLC* INTO *ABH*
- BX7 -X6*X7 CLEAR APPLICATION BLOCK TYPE
- SX1 B1+B1 SET MSG ABT
- LX2 59-57
- PL X2,FEL4 IF NO OUTPUT TO FOLLOW
- SX1 B1 SET *BLK* *BLK* ABT
- FEL4 LX1 59-5
- BX7 X1+X7 SET APPLICATION BLOCK TYPE
- SA2 SENI SET TLC INTO ABH
- BX7 X7+X2
- SA7 SENB+2
- EQ FELX RETURN
- RST SPACE 4,20
- ** RST - RETURN STATUS TO TASK.
- *
- * RETURN NETWORK SUPERVISORY MESSAGE TO TASK IF RECALL
- * PARAMETER WERE SPECIFIED.
- *
- * ENTRY (B5) .NE. ZERO IF CEASE REQUESTED.
- * (B3) = NUMBER OF CHARACTERS IN LAST WORD OF MESSAGE.
- * (X5) = ADDRESS OF TEMPORARY STORAGE LOCATION.
- *
- * EXIT (X6) .LT. 0 - IF ILLEGAL SUPERVISORY MESSAGE.
- * (BLOCK) RETURNED TO TASK IF (BLOCK) .NE. ZERO
- * UPON ENTRY TO *SEND*.
- * (STATUS) = TAF STATUS MESSAGE, DERIVED FROM (SENB+3).
- *
- * USES A - 1, 2, 3, 4, 6, 7.
- * B - 3, 4.
- * X - 0, 1, 2, 3, 4, 6, 7.
- RST SUBR ENTRY/EXIT
- SB4 TSENL-1
- SA2 SENB
- LX2 59-56
- PL X2,RST1 IF APPLICATION BLOCK NOT TO BE RETURNED
- MX0 12
- SA3 SENB+1 BLOCK NUMBER
- SA2 SENK FWA OF BLOCK
- SX3 X3
- SA4 X2
- BX7 X0*X4 CLEAR OLD BLOCK NUMBER
- BX7 X7+X3 NEW BLOCK NUMBER
- SA7 A4+ RETURN BLOCK NUMBER
- RST1 SA1 SENF READ STATUS REQUEST
- SX4 X1+
- ZR X1,RST4 IF STATUS NOT REQUESTED
- SA1 SENM
- SA2 SENB+3 SUPERVISORY MESSAGE RETURNED FROM NETWORK
- BX0 X1*X2
- * DETERMINE SUPERVISORY MESSAGE VIA TABLE LOOK-UP.
- RST2 SA3 TSEN+B4 READ CURRENT TABLE ENTRY
- BX6 X1*X3
- IX6 X6-X0
- SB4 B4-B1
- ZR X6,RST3 IF ENTRY AND MESSAGE MATCH
- MX6 1
- GE B4,RST2 IF TABLE NOT EXHAUSTED
- EQ RSTX RETURN
- RST3 SX6 X3 RETURN MESSAGE NUMBER TO (STATUS)
- PX6 X6
- SA6 X4+
- RST4 SA3 ABH. READ ABH
- SA1 SENC RESTORE LAST WORD
- LX3 59-22
- PL X3,RST5 IF NOT DISPLAY
- BX6 X1
- SA2 SENL RESTORE LAST TWO WORDS
- SA6 X2
- SA1 A1+B1
- BX6 X1
- SA6 A6+B1
- RST5 SA1 SENG RESTORE (A0)
- SA0 X1
- BX6 X6-X6 SET NON-ERROR CONDITION
- EQ RSTX RETURN
- SPACE 4,10
- * PROGRAM CONSTANTS AND TEMPORARY STORAGE.
- ABH. VFD 6/2,12/0,18/0,4/4,1/0,3/0,1/1,3/0,12/0
- SENB BSSZ 4 PARAMETER BLOCK FOR *SEND*
- SENC BSSZ 4 ARGUMENT STORAGE FOR *SEND*
- SENE CON 0 STORAGE FOR FWA OF CALL PARAMETERS
- SENF CON 0 STORAGE FOR STATUS ADDRESS
- SENG CON 0 STORAGE FOR (A0)
- SENH CON 0 COBOL CALL FLAG
- SENI CON 0 STORAGE FOR MESSAGE CHARACTER COUNT
- SENJ CON 0 STORAGE FOR MESSAGE FWA
- SENK CON 0 STORAGE FOR *BLOCK* PARAMETER ADDRESS
- SENL CON 0 STORAGE FOR LWA MESSAGE
- * MASK FOR EXTRACTING SUPERVISORY MESSAGES.
- SENM VFD 8/377B,1/0,1/0,6/77B,8/377B,36/0
- SPACE 4,10
- * TABLE OF SUPERVISORY MESSAGES.
- TSEN BSS 0
- VFD 8/PFFC,1/0,1/0,6/SFAK,8/0,36/1
- VFD 8/PFFC,1/0,1/0,6/SFAX,8/AXLB,36/2
- VFD 8/PFCN,1/0,1/0,6/SFEN,8/0,36/10
- VFD 8/PFCN,1/0,1/0,6/SFCB,8/CBLF,36/11
- TSENL EQU *-TSEN LENGTH ON MESSAGE TABLE
- * COMMON DECK.
- *CALL COMKZFN
- SPACE 4,10
- END
cdc/nos2.source/opl871/send.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator