IDENT CRMTASK
ENTRY CRMTASK
LCC OVERLAY(CRMTASK,0,0)
SST BEGN,CMBL
SYSCOM B1
*COMMENT CRMTASK - TAF/CRM STATUS AND DISPLAY TASK.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
*IFCALL NAM,COMKTAF
*NIFCALL NAM,COMKTRN
SPACE 4,10
*** CRMTASK - TAF/CRM STATUS COMMAND AND DISPLAY TASK.
*
* R. G. PARKHOUSE. 80/05/23.
* A. SROKA. 80/07/25.
* T. E. SCHULL. 84/11/02.
SPACE 4,90
*** *CRMTASK* PERFORMS FUNCTIONS FOR *TAF/CRM* AND FORMATS *CRM*
* STATUS DISPLAYS FOR THE OPERATOR OR AN ANALYST.
* *CRMTASK* IS INITIALLY SCHEDULED WHEN -
*
* 1) ONE OF THE FOLLOWING *K-DISPLAY* COMMANDS IS ENTERED.
*
* CRMSTAT. DISPLAY GENERAL *CRM* STATUS.
* CRMSTAT,DB. DISPLAY STATUS OF DATA BASE.
* CRMSTAT,DBPFNXX. DISPLAY STATUS OF DATA BASE FILE.
* DBUP,DB. UP THE DATA BASE.
* DBUP,DBPFNXX. UP THE DATA BASE FILE.
* DBDOWN,DB. DOWN THE DATA BASE.
* DBDOWN,DBPFNXX. DOWN THE DATA BASE FILE.
* MENU. DISPLAY COMMAND REPERTOIRE.
*
* IF *CRMTASK* IS INVOKED FROM THE *K-DISPLAY* AND
* NO COMMAND IS ENTERED, THEN THE MENU OF VALID
* COMMANDS IS DISPLAYED.
*
* 2) *TAF* RECEIVES A *SIC* REQUEST FROM THE *CRM* BATCH
* RECOVERY PROGRAM. *CRMTASK* FORMATS A PARAMETER BLOCK
* AND ISSUES A *CRMSIC* REQUEST TO *AAMI*.
*
* 3) A TERMINAL OPERATOR INVOKES *CRMTASK* DIRECTLY OR VIA
* *CALLTSK* REQUEST. IN EITHER CASE THE COMMUNICATION
* BLOCK MUST BE FORMATTED EXACTLY THE SAME WAY - AS IF
* THE MESSAGE CAME DIRECTLY FROM THE TERMINAL.
*
* TERMINAL OPERATOR CANNOT REQUEST ANY FUNCTIONS OTHER
* THAN *CRMSTAT*, AND THAT IS RESTRICTED TO HIS/HER OWN
* DATA BASE.
* THE HOOKS HAVE BEEN LEFT IN THE CODE TO ENLARGE
* THE TERMINAL OPERATOR-S COMMAND REPERTOIRE.
*
* VALID COMMANDS FROM THE TERMINAL ARE -
*
* CRMSTAT,DB.
* CRMSTAT,DBPFN.
*
*
* IF *CRMTASK* IS INITIATED FROM THE OPERATOR CONSOLE TO
* PROCESS ANY ONE OF THE *CRMSTAT* REQUESTS, SUBSEQUENT
* *K-DISPLAY* COMMANDS ARE PASSED TO *CRMTASK* RATHER THAN
* BEING PROCESSED BY *TAF*. SIMILARLY, WHEN *CRMTASK* IS
* INITIATED FROM A TERMINAL TO PROCESS ANY OF THE *CRMSTAT*
* REQUESTS, THE DISPLAY IS SENT TO THE TERMINAL AND SUBSEQUENT
* REQUESTS WILL BE ACCEPTED FROM THE TERMINAL. IN EITHER CASE,
* ADDITIONAL VALID COMMANDS ARE -
*
* END. END DISPLAY AND CEASE.
* +. DISPLAY NEXT SCREEN IF MORE.
* -. DISPLAY FIRST SCREEN.
*
* IN CASE OF *SIC* REQUEST ERRORS, THE FOLLOWING MESSAGES,
* ALONG WITH THE FIRST 4 WORDS OF MESSAGE IN THE COMMUNICA-
* TION BLOCK, WILL BE WRITTEN IN *JOUR0* -
*
* CRMTASK- INCORRECT REQUEST.
* CRMTASK- DATA BASE/FILE NAME UNKNOWN.
* CRMTASK- INCORRECT TT SEQUENCE NUMBER.
* CRMTASK- DATA BASE DOWNED BY OPERATOR.
* CRMTASK- NOT ALL DATA BASE FILES UPPED.
* CRMTASK- DATA BASE/FILE CANNOT BE UPPED.
* CRMTASK- DATA BASE/FILE BEING IDLED.
* CRMTASK- INCORRECT REQUEST FORMAT.
*
* THE FOLLOWING INFORMATIVE OR ERROR MESSAGES WILL APPEAR
* ON A *K-DISPLAY* AS A RESULT OF OPERATOR COMMANDS -
*
* DATA BASE/FILE NAME UNKNOWN.
* DATA BASE/FILE CANNOT BE UPPED.
* DATA BASE/FILE ALREADY DOWN OR IDLE.
* INCORRECT PAGING COMMAND.
* INSUFFICIENT FIELD LENGTH FOR THIS COMMAND.
* INCORRECT COMMAND.
* NOT ALL DATA BASE FILES UPPED.
* REQUEST COMPLETE.
*
* THE TERMINAL WILL ALSO RECEIVE ALL OF THE ABOVE MESSAGES
* AND, IN ADDITION MAY RECEIVE THE FOLLOWING -
*
* ENTER NEXT COMMAND...
* CRMTASK TIMEOUT.
* CRMTASK COMPLETE.
*
SPACE 4,10
*** COMMON DECKS.
BEGN BSS 0
*CALL COMCMAC
*CALL COMCDCM
*CALL COMCDCP
*CALL COMKIPR
*CALL COMKMAC
*CALL COMKFLD
*CALL COMKTDM
*CALL COMKCRM
*CALL COMKCBD
*CALL COMKTER
ORG BEGN
SPACE 4,10
**** ASSEMBLY CONSTANTS.
CMAXNF EQU 100D MAXIMUM NUMBER OF DISPLAYABLE DBPFNS
KFNL EQU 20 NUMBER OF LINES BEFORE *MORE* LINE
****
CMB SPACE 4,10
* COMMUNICATION BLOCK.
CMBK BSS CMBL
VFD 60/0L. MESSAGE TERMINATOR
SPACE 4,10
* GLOBAL VARIABLES.
DBNM CON 0 DATA BASE NAME
ORIG CON 0 TASK ORIGIN (0=TAF, 1=TERMINAL)
MORE DATA 10HMORE
PAGE CON DMU PROCESSOR RE-ENTRY ADDRESS
FPAG CON DMU PROCESSOR ENTRY ADDRESS
NPAG CON 0 BUFFER ADDRESS FOR NEXT PAGE OF DATA
BLNK DATA 10H
CWKD CON KDE *K-DISPLAY* CONTROL WORD
EAKD CON KDEA *K-DISPLAY* ERROR MESSAGE ADDRESS
IAKD CON 0 *K-DISPLAY* INPUT MESSAGE ADDRESS
DSTP CON 0 *K-DISPLAY* (0=FORMATTED , 1=-C- FORMAT)
RFRS CON 0 REFRESH *K-DISPLAY* SWITCH
CPAR CON 0 *CRMSTAT* PARAMETER FOR SCREEN REFRESH
IOLN CON 377777B SYSTEM REQUEST CALL LIMIT
TILN CON 7777B TASK TIME LIMIT
PADR BSSZ 5 PARAMETER BLOCK FOR *AAMI* REQUEST
* *AAMI* CALLING SEUQUENCE FOR *CRMSTAT*.
CSQ1 CON PADR
CON PADR+1
CON 0
CON PADR+2
CON 0
* *AAMI* CALLING SEQUENCE FOR *DBUP* AND *DBDOWN*.
CSQ2 CON PADR
CON PADR+1
CON 0
* *AAMI* CALLING SEQUENCE FOR *CRMSIC*.
CSQ3 CON PADR
CON PADR+1
CON PADR+2
CON PADR+3
CON 0
CRMTASK SPACE 4,25
** CRMTASK - INITIALIZATION.
*
* THIS SUBROUTINE DETERMINES THE TRANSACTION ORIGIN.
* THEN, IF *SIC* COMMAND PROCESSING, IT VALIDATES THE
* COMMAND AND JUMPS TO THE *SIC* PROCESSOR. IF COM-
* MAND ORIGINATES FROM A TERMINAL, THE PARAMETERS ARE
* UNPACKED INTO RA+2 AND THEN MOVED BACK TO *TMSW*.
*
* ENTRY COMMUNICATION BLOCK LOADED.
*
* EXIT TO *CVL*, IF *TAF* OR TERMINAL ORIGIN.
* (B3) = FWA OF VALID COMMAND TABLE.
*
* ERROR TO *IBR*, IF INCORRECT *SIC* COMMAND.
* (X3) = ERROR CODE.
* TO *TTE*, IF INCORRECT TERMINAL COMMAND.
* (B2) = ERROR CODE.
*
* USES X - 0, 1, 2, 3, 5, 6, 7.
* A - 1, 2, 5, 6, 7.
* B - 1, 3.
*
* CALLS ITU, PRK.
*
* MACROS IIO, ITL.
CRMTASK BSS 0 ENTRY
SB1 1
IIO IOLN INCREASE TASK-S SYSTEM REQUEST CALL LIMIT
ITL TILN INCREASE TASK-S TIME LIMIT
SX3 KBLG
RJ PRK PRESET *K-DISPLAY* BUFFER
SA1 TRSQ
MX0 12
BX6 X0*X1 EXTRACT DATA BASE FROM C.B.
SA6 DBNM
SX6 B0+
SA1 CBSYW
LX1 59-CBSYS
NG X1,CRM1 IF SYSTEM ORIGIN TASK
SX6 B1 TERMINAL ORIGIN
MX0 36
SA1 TMSW
SA2 CRMA
SX3 IER0 IN CASE ATTEMPTED *SIC* REQUEST
BX1 X1-X2
ZR X1,IBR IF *SIC* FROM TERMINAL
CRM1 SA6 ORIG SAVE TASK ORIGIN
SX7 KDEB+1 *K-DISPLAY* INPUT LINE
SA7 IAKD
SB3 CVLA FWA OF COMMAND TABLE
ZR X6,CVL IF *TAF* ORIGIN
RJ ITU INSERT TERMINATOR AND UNPACK MESSAGE
SA1 2
SA2 A1+1
SA5 CRMB
BX6 X1
BX5 X5-X1
NZ X5,TTE IF REQUEST OTHER THAN *CRMSTAT*
SA6 TMSW
BX7 X2
SB3 CVLA FWA OF COMMAND TABLE
SA7 A6+B1
EQ CVL SEARCH FOR THE PROCESSOR
CRMA DATA 0LCRMSIC
CRMB DATA 0LCRMSTAT
CVL SPACE 4,25
** CVL - COMMAND VALIDATION.
*
* CVL VALIDATES THE COMMAND AND JUMPS TO THE RELEVANT COMMAND
* PROCESSOR.
*
* ENTRY (B3) = FWA OF VALID COMMAND TABLE.
* (IAKD) = *K-DISPLAY* INPUT MESSAGE ADDRESS.
* FIRST WORD OF DATA AREA OF COMMUNICATION BLOCK HAS THE
* COMMAND.
*
* EXIT TO RELEVANT COMMAND PROCESSOR.
*
* ERROR TO *TPA* (*TAF* ORIGIN).
* TO *TTE* (TERMINAL ORIGIN).
* (B2) = ERROR CODE.
*
* USES X - 0, 1, 2, 3, 4, 7.
* A - 1, 2, 3, 7.
* B - 2, 3.
*
* CALLS SEM.
*
* MACROS MOVE.
CVL BSS 0 ENTRY
MOVE KBLCL,KBLC,KDBD BLANK ERROR MESSAGE LINES
MOVE KBLCL,KBLC,KDCM
MOVE KBLFL,KBLF,KDAF
MOVE KBLFL,KBLF,KDEA
SA1 TRSQ
SA2 TMSW+1 PARAMETER
MX0 12
BX4 X1-X2
SA3 ORIG
BX4 X0*X4
MX0 42
SX7 B0+
SA1 TMSW
SA7 RFRS RESET SCREEN REFRESH SWITCH
ZR X3,CVL1 IF *TAF* ORIGIN
ZR X2,CVL1 IF NO PARAMETER
NZ X4,CVL2 IF NOT TERMINAL OWN DATA BASE
CVL1 SA2 B3 NEXT COMMAND FROM LIST
ZR X2,CVL2 IF END OF LIST
SB3 B3+B1
BX3 X0*X2
BX3 X3-X1
NZ X3,CVL1 IF NO MATCH
SB3 X2+ COMMAND PROCESSOR ADDRESS
JP B3 PROCESS COMMAND
CVL2 SA3 ORIG ORIGIN
SB2 ER5 *INCORRECT COMMAND.*
NZ X3,TTE IF TERMINAL ORIGIN
RJ SEM SET ERROR MESSAGE
EQ TPA DISPLAY ERROR MESSAGE
* VALID COMMAND TABLE FIRST TIME THROUGH.
CVLA BSS 0
VFD 42/0,18/DMU
VFD 42/0LMENU,18/DMU
VFD 42/0LCRMSTAT,18/CRS
VFD 42/0LDBUP,18/DBU
VFD 42/0LDBDOWN,18/DBD
VFD 42/0LCRMSIC,18/SIC
CON 0 TABLE TERMINATOR
* VALID COMMAND TABLE WHILE RUNNING.
CVLB VFD 42/0LCRMSTAT,18/CRS
VFD 42/0LDBUP,18/DBU
VFD 42/0LDBDOWN,18/DBD
VFD 42/0LMENU,18/DMU
VFD 42/0LEND,18/TPD
VFD 42/1C+,18/PFP
VFD 42/1C-,18/PBP
CON 0 TABLE TERMINATOR
CRS SPACE 4,25
** CRS - CRMSTAT PROCESSOR.
*
* CRS VALIDATES THE PARAMETER AND IF VALID ISSUES A *CRMSTAT*
* REQUEST TO *AAMI* TO GET STATUS INFORMATION.
*
* ENTRY SECOND WORD OF DATA AREA OF COMMUNICATION BLOCK
* CONTAINS THE PARAMETER.
*
* EXIT TO *FCD* IF CRM STATUS REQUEST.
* TO *FDD* IF DATA BASE STATUS REQUEST.
* TO *FFD* IF FILE STATUS REQUEST.
*
* ERROR TO *TPA*. (TAF ORIGIN).
* (X1) = ADDRESS OF K-DISPLAY CONTROL WORD.
* TO *TTE*. (TERMINAL ORIGIN).
* (B2) = ERROR CODE.
*
* USES X - ALL.
* A - 1, 3, 4, 7.
* B - 2.
*
* CALLS CST, SEM.
CRS BSS 0 ENTRY
SX7 B0+
SB2 BUFSIZE
CRS1 SB2 B2-1 CLEAR BUFFER
SA7 BADR+B2
PL B2,CRS1 IF NOT ENTIRE BUFFER SET TO ZEROS
SA4 ORIG ORIGIN
SA1 TMSW+1 PARAMETER
SX6 B1
BX7 X1
SA6 RFRS SET SWITCH TO REFRESH *K-DISPLAY*
SA7 CPAR SAVE *CRMSTAT* PARAMETER
ZR X1,CRS3 IF NO PARAMETER
MX0 12
BX2 -X0*X1
SA3 DBNM
ZR X4,CRS2 IF SYSTEM ORIGIN
BX3 X1-X3
BX3 X0*X3
SB2 ER5 *INCORRECT REQUEST*
NZ X3,TTE IF TERMINAL DID NOT REQUEST OWN DATA BASE
CRS2 NZ X2,CRS5 IF FILE STATUS REQUEST
EQ CRS4 PROCESS DATA BASE STATUS REQUEST
* CRM STATUS REQUEST.
CRS3 SX5 B0+ FUNCTION CODE - *CRM* STATUS
SB2 ER5 *INCORRECT COMMAND*
NZ X4,TTE IF REQUEST FROM TERMINAL
SX6 BADR FWA OF BUFFER TO RECEIVE STATUS
SX7 CST1L LENGTH OF BUFFER
RJ CST ISSUE *CRMSTAT* REQUEST
SB2 ER4 *INSUFICIENT FIELD LENGTH.*
NZ X2,CRS6 IF BUFFER TOO SMALL
SX5 B1+ FUNCTION CODE - REQUEST ALL *TDRF-S*
SX6 BADR+CST1L FWA OF BUFFER TO RECEIVE STATUS
SX7 CST2L LENGTH OF BUFFER
RJ CST ISSUE *CRMSTAT* FUNCTION
NZ X2,CRS6 IF BUFFER TOO SMALL
EQ FCD FORMAT DISPLAY
* DATA BASE STATUS REQUEST.
CRS4 SX5 B1+B1 FUNCTION CODE - DATA BASE STATUS
BX5 X1+X5 DATA BASE NAME + FUNCTION CODE
SX6 BADR FWA OF BUFFER TO RECEIVE STATUS
SX7 DST1L LENGTH OF BUFFER
RJ CST ISSUE *CRMSTAT* REQUEST
SX2 X2-1
SB2 ER0 *DATA BASE/FILE NAME UNKNOWN.*
ZR X2,CRS6 IF DATA BASE UNKNOWN
SB2 ER4 *INSUFICIENT FIELD LENGTH.*
PL X2,CRS6 IF BUFFER TOO SMALL
SA1 TMSW+1 DATA BASE NAME
SX5 3 FUNCTION CODE - REQUEST ALL *TLNT-S*
BX5 X1+X5
SX6 BADR+DST1L FWA OF BUFFER TO RECEIVE STATUS
SX7 DST2L LENGTH OF BUFFER
RJ CST ISSUE *CRMSTAT* REQUEST
SB2 ER4 *INSUFICIENT FIELD LENGTH.*
NZ X2,CRS6 IF BUFFER TOO SMALL
EQ FDD FORMAT DISPLAY
* FILE STATUS REQUEST.
CRS5 SX5 4 FUNCTION CODE - FILE STATUS
BX5 X1+X5 FILE NAME + FUNCTION CODE
SX6 BADR FWA OF BUFFER TO RECEIVE STATUS
SX7 FSTBL LENGTH OF BUFFER
RJ CST ISSUE *CRMSTAT* REQUEST
SX2 X2-1
SB2 ER0 *DATA BASE/FILE NAME UNKNOWN.*
ZR X2,CRS6 IF FILE NAME UNKNOWN
SB2 ER4 *INSUFICIENT FIELD LENGTH.*
PL X2,CRS6 IF BUFFER TOO SMALL
EQ FFD FORMAT DISPLAY
* PROCESS ERRORS.
CRS6 NZ X4,TTE IF TERMINAL ORIGIN
RJ SEM SET ERROR MESSAGE
EQ TPA DISPLAY ERROR MESSAGE
DBD SPACE 4,25
** DBD - DATA BASE DOWN.
*
* DBD ISSUES A REQUEST TO *AAMI* TO DOWN A DATA BASE OR DATA
* BASE FILE.
*
* ENTRY SECOND WORD OF DATA AREA OF COMMUNICATION BLOCK
* CONTAINS DATA BASE OR FILE NAME.
*
* EXIT TO *TPA*. (TAF ORIGIN).
* (X1) = ADDRESS OF *K-DISPLAY* CONTROL WORD.
* TO *TPD*. (TERMINAL ORIGIN).
*
* ERROR TO *TPA*. (TAF ORIGIN).
* (X1) = ADDRESS OF *K-DISPLAY* CONTROL WORD.
* TO *TTE*. (TERMINAL ORIGIN).
* (B2) = ERROR CODE.
*
* USES X - 1, 2, 6, 7.
* A - 1, 2, 6, 7.
* B - 2.
*
* CALLS SEM.
*
* MACROS DBDOWN.
DBD BSS 0 ENTRY
SX6 DMU
SA6 FPAG SET PROCESSOR ADDRESS
SA6 PAGE
SX6 KDE *K-DISPLAY* CONTROL WORD
SX7 KDEA *K-DISPLAY* ERROR LINE
SA6 CWKD
SA7 EAKD
SX6 KDEB+1 *K-DISPLAY* INPUT LINE
SA6 IAKD
SX6 B0+ FORMATTED *K-DISPLAY*
SA6 DSTP
SA1 TMSW+1 DATA BASE OR FILE NAME
BX6 X1
BX7 X7-X7
SA6 PADR
SA7 A6+B1 CLEAR STATUS WORD
SA7 A7+B1 PARAMETER LIST TERMINATOR
DBDOWN CSQ2 ISSUE *AAMI* REQUEST
SA1 PADR+1 STATUS
SA2 ORIG
NZ X1,DBD1 IF ERROR
SB2 ER7 *REQUEST COMPLETE.*
NZ X2,TPD IF TERMINAL ORIGIN
RJ SEM
EQ TPA COMPLETE PROCESSING
DBD1 SX6 X1-TERB
SB2 ER0 *DATA BASE/FILE NAME UNKNOWN.*
ZR X6,DBD2 IF NO FILE OR DATA BASE
SB2 ER3 *DATA BASE/FILE ALREADY DOWN OR IDLE.*
DBD2 NZ X2,TTE IF TERMINAL ORIGIN
RJ SEM SET ERROR MESSAGE
EQ TPA DISPLAY ERROR MESSAGE
DBU SPACE 4,25
** DBU - DATA BASE UP.
*
* DBU ISSUES A REQUEST TO *AAMI* TO UP A DATA BASE OR DATA BASE
* FILE.
*
* ENTRY SECOND WORD OF DATA AREA OF COMMUNICATION BLOCK
* CONTAINS DATA BASE OR FILE NAME.
*
* EXIT TO *TPA*. (TAF ORIGIN).
* (X1) = ADDRESS OF *K-DISPLAY* CONTROL WORD.
* TO *TPD*. (TERMINAL ORIGIN).
*
* ERROR TO *TPA*. (TAF ORIGIN).
* (X1) = ADDRESS OF *K-DISPLAY* CONTROL WORD.
* TO *TTE*. (TERMINAL ORIGIN).
* (B2) = ERROR CODE.
*
* USES X - 1, 2, 6, 7.
* A - 1, 2, 6, 7.
* B - 2.
*
* CALLS SEM.
*
* MACROS DBUP.
DBU BSS 0 ENTRY
SX6 DMU
SA6 FPAG SET PROCESSOR ADDRESS
SA6 PAGE
SX6 KDE *K-DISPLAY* CONTROL WORD
SX7 KDEA *K-DISPLAY* ERROR LINE
SA6 CWKD
SA7 EAKD
SX6 KDEB+1 *K-DISPLAY* INPUT LINE
SA6 IAKD
SX6 B0+ FORMATTED *K-DISPLAY*
SA6 DSTP
SA1 TMSW+1 DATA BASE OR FILE NAME
BX6 X1
BX7 X7-X7
SA6 PADR
SA7 A6+B1 CLEAR STATUS WORD
SA7 A7+B1 PARAMETER LIST TERMINATOR
DBUP CSQ2 ISSUE *AAMI* REQUEST
SA1 PADR+1 STATUS
SA2 ORIG
NZ X1,DBU1 IF ERROR
SB2 ER7 *REQUEST COMPLETE.*
NZ X2,TPD IF TERMINAL ORIGIN
RJ SEM
EQ TPA COMPLETE PROCESSING
DBU1 SX6 X1-TERB
SB2 ER0 *DATA BASE/FILE NAME UNKNOWN.*
ZR X6,DBU2 IF NO FILE OR DATA BASE
SB2 ER1 *NOT ALL DATA BASE FILES UPPED.*
SX6 X1-TERAL
ZR X6,DBU2 IF NOT ALL FILES UP
SB2 ER2 *DATA BASE/FILE CANNOT BE UPPED.*
DBU2 NZ X2,TTE IF TERMINAL ORIGIN
RJ SEM SET ERROR MESSAGE
EQ TPA DISPLAY ERROR MESSAGE
DMU SPACE 4,25
** DMU - DISPLAY MENU.
*
* THIS SUBROUTINE DISPLAYS THE MENU OF *CRMTASK*
* COMMANDS UPON THE *K-DISPLAY*. IT CAN ONLY BE
* INVOKED BY *K-DISPLAY* COMMAND. NO PROVISIONS ARE
* MADE TO DISPLAY MENU AT THE TERMINAL.
*
* ENTRY NONE.
*
* EXIT TO *TPA*.
* (X1) = *K-DISPLAY* CONTROL WORD.
*
* ERROR TO *TTE*, IF TERMINAL ORIGIN.
* (B2) =ERROR CODE.
* TO *IBR*, IF *SIC* REQUEST.
* (X3) = ERROR CODE.
*
* USES X - 1, 3, 4, 6, 7.
* A - 1, 6, 7.
* B - 2, 3.
*
* MACROS SYSTEM.
DMU BSS 0 ENTRY
SX6 DMU
SA6 FPAG SET PROCESSOR ADDRESS
SA6 PAGE
SX6 KDE *K-DISPLAY* CONTROL WORD
SX7 KDEA *K-DISPLAY* ERROR LINE
SA6 CWKD
SA7 EAKD
SX6 KDEB+1 *K-DISPLAY* INPUT LINE
SA6 IAKD
SX6 B0+ FORMATTED *K-DISPLAY*
SA6 DSTP
SA1 ORIG
SB2 ER5 *INCORRECT COMMAND.*
SX1 X1-1
ZR X1,TTE IF TERMINAL ORIGIN
SX3 B0+ *INCORRECT SIC REQUEST.*
PL X1,IBR IF *BTRAN* REQUEST
SX1 KDE *K-DISPLAY* CONTROL WORD
EQ TPA DISPLAY THE MENU
PBP SPACE 4,20
** PBP - PAGE BACKWARD PROCESSOR.
*
* PBP REPROCESSES THE *CRMSTAT* INFORMATION AGAIN.
* IT GETS THE FWA OF THE BUFFER AND ENTERS THE AP-
* PROPRIATE DISPLAY PROCESSOR.
*
* ENTRY (FPAG) = PROCESSOR ADDRESS.
* (BADR) = CONTAINS DATA RECEIVED FROM *AAMI*.
*
* EXIT TO (PAGE).
*
* USES X - 2.
* A - 2.
* B - 3.
PBP BSS 0 ENTRY
SA2 FPAG
SB3 X2+
JP B3 ENTER PROCESSOR
PFP SPACE 4,20
** PFP - PAGE FORWARD PROCESSOR.
*
* PFP GETS THE BUFFER ADDRESS FROM WHICH TO CONSTRUCT THE NEXT
* PAGE OF THE DISPLAY, AND RE-ENTERS THE DISPLAY PROCESSOR.
*
* ENTRY (PAGE) = PROCESSOR ADDRESS FOR REENTRY.
* (NPAG) = BUFFER ADDRESS OF DATA FOR DISPLAY.
*
* EXIT TO DISPLAY PROCESSOR WHOSE ADDRESS IS IN *PAGE*.
* (A5) = FWA OF BUFFER OF DISPLAY DATA.
* (X5) = CONTENTS OF A WORD AT (A5).
*
* USES X - 1, 2, 5.
* A - 1, 2, 5.
* B - 3.
PFP BSS 0 ENTRY
SA1 NPAG
SA2 PAGE
SB3 X2
SA5 X1
JP B3 REENTER DISPLAY PROCESSOR
SIC SPACE 4,20
** SIC - PROCESS *CRMSIC* REQUEST.
*
* SIC REFORMATS THE INFORMATION FROM THE COMMUNICATION BLOCK
* INTO A PARAMETER BLOCK, AND ISSUES A *CRMSIC* REQUEST TO
* *AAMI*.
*
* ENTRY FIRST FOUR WORDS OF DATA AREA OF COMMUNICATION BLOCK
* CONTAIN INFORMATION TO BE STORED IN PARAMETER BLOCK.
*
* EXIT TO *TPD*.
*
* ERROR TO *IBR*.
* (X3) = ERROR CODE.
*
* USES X - 0, 1, 3, 6, 7.
* A - 1, 3, 6, 7.
*
* MACROS CRMSIC.
SIC BSS 0 ENTRY
SA1 TMSW+1
MX0 42
BX6 X0*X1 DATA BASE/FILE NAME
SA6 PADR
SX7 B0
SA7 A6+B1 CLEAR STATUS WORD
BX6 -X0*X1 BATCH JOB SEQUENCE NUMBER
SA6 A7+B1
SA1 A1+B1 FUNCTION CODE
BX6 X1
SA6 A6+B1
SA7 A6+B1 PARAMETER LIST TERMINATOR
CRMSIC CSQ3 ISSUE *AAMI* REQUEST
SA3 PADR+1 STATUS
ZR X3,TPD IF NO ERROR
SX6 X1-TERB
SX3 IER1
ZR X6,IBR IF UNKNOWN DATA BASE
SX3 IER2
SX6 X1-TERAD
ZR X6,IBR IF INCORRECT TT NUMBER
SX3 IER3
SX6 X1-TERAK
ZR X6,IBR IF DATA BASE DOWNED BY OPERATOR
SX3 IER4
SX6 X1-TERAL
ZR X6,IBR IF NOT ALL FILE UP
SX3 IER5
SX6 X1-TERAM
ZR X6,IBR IF DATA BASE CANNOT BE UPPED
SX3 IER6
SX6 X1-TERAG
ZR X6,IBR IF DATA BASE IDLING DOWN
SX3 IER7
EQ IBR JOURNAL MESSAGE AND QUIT
CST SPACE 4,45
** CST - ISSUE *CRMSTAT* REQUEST.
*
* THIS SUBROUTINE REQUESTS *AAMI* STATUS. FUNCTION CODE IN X5
* DETERMINES WHAT IS RETURNED BY *AAMI*.
*
* FC = 0, *AAMI* RETURNS *TSEQ* TABLE,
* A WORD OF BINARY ZEROS,
* INPUT QUEUE FET,
* INPUT QUEUE,
* OUTPUT QUEUE FET,
* OUTPUT QUEUE,
* A WORD OF BINARY ZEROS.
* = 1, *AAMI* RETURNS ALL *TDRF* TABLES,
* A WORD OF BINARY ZEROS.
* = 2, *AAMI* RETURNS *TDRF* TABLE,
* A WORD OF BINARY ZEROS,
* *TARF* TABLE,
* A WORD OF BINARY ZEROS,
* ALL *TQRF* TABLES FOR
* THE SPECFIED DATA BASE,
* A WORD OF BINARY ZEROS.
* = 3, *AAMI* RETURNS ALL *TLNT* TABLES FOR
* THE SPECFIED DATA BASE,
* A WORD OF BINARY ZEROS.
* = 4, *AAMI* RETURNS *TLNT* TABLE,
* A WORD OF BINARY ZEROS,
* NUMBER OF ACTIVE USERS,
* NUMBER OF LOCKED RECORDS FOR
* THE SPECFIED DATA BASE FILE,
* A WORD OF BINARY ZEROS.
*
* ENTRY (X5) = FUNCTION CODE
* (X6) = FWA OF BUFFER
* (X7) = LENGTH OF BUFFER
*
* EXIT (X2) = STATUS REPLY
*
* USES X - 2, 6, 7.
* A - 2, 6, 7.
*
* MACROS CRMSTAT.
CST SUBR ENTRY/EXIT
SA7 PADR+2
SA6 CSQ1+2
BX6 X6-X6
SA6 A7-B1
BX6 X5
SA6 A6-B1
BX7 X7-X7
SA7 A7+B1 PARAMETER LIST TERMINATOR
CRMSTAT CSQ1 ISSUE *AAMI* REQUEST
SA2 PADR+1 STATUS WORD
EQ CSTX RETURN
FCD SPACE 4,20
** FCD - FORMAT CRMSTAT DISPLAY.
*
* FCD EXTRACTS RAW DATA FROM THE *TSEQ*, *AMIQ*, *AMOQ*, *TDRF*
* TABLES AND FORMATS A *K-DISPLAY*.
*
* ENTRY BADR = FWA OF TABLES.
*
* REENTRY AT *FCD5*.
* (A5) = FWA OF NEXT *TDRF*.
* (X5) = FIRST WORD OF *TDRF*.
*
* EXIT TO *TPA*.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 5, 6, 7.
* B - 2, 3, 4, 6.
*
* CALLS CDD.
FCD BSS 0 ENTRY
SX6 FCD
SA6 FPAG SET PROCESSOR ADDRESS
SA6 PAGE
SX6 KDA *K-DISPLAY* CONTROL WORD
SX7 KDAF *K-DISPLAY* ERROR LINE
SA6 CWKD
SA7 EAKD
SX6 KDAG+1 *K-DISPLAY* INPUT LINE
SA6 IAKD
SX6 B0 FORMATTED *K-DISPLAY*
SX1 B0 INITIALIZE COUNT OF ACTIVE TRANSACTIONS
SA6 DSTP
SB2 TSEQE LENGTH OF *TSEQ* TABLE ENTRY
SB3 CMDM*RMDM+1 NO OF ENTRIES
SA5 BADR-TSEQE
FCD1 SB3 B3-B1
LT B3,FCD2 IF ALL ENTRIES CHECKED
SA5 A5+B2 NEXT ENTRY
ZR X5,FCD1 IF EMPTY
SX1 X1+1 INCREMENT ACTIVE COUNT
EQ FCD1 NEXT ENTRY
FCD2 RJ CDD CONVERT TO DECIMAL DISPLAY
SA6 KDAB+1 STORE IN DISPLAY BUFFER
SA5 A5+TSEQE+1 SKIP LAST ENTRY AND THE ZERO WORD
SA1 A5+B1 GET *AMIQ* FET POINTERS
SX1 X1 FIRST
SA2 A1+B1 IN
SA3 A2+B1 OUT
SA4 A3+1
SX4 X4 LIMIT
IX6 X2-X3 IN-OUT
PL X6,FCD3 IF IN .GE. OUT
IX3 X4-X3 LIMIT-OUT
IX2 X2-X1 IN-FIRST
IX6 X2+X3 REQUESTS IN *AMIQ*
FCD3 BX1 X6
MX0 24
RJ CDD CONVERT TO DECIMAL DISPLAY
SA1 KDAA NUMBER OF TRANSACTIONS IN INPUT QUEUE
BX2 X0*X1 EXTRACT *KDL* COORDINATES
BX6 -X0*X6
BX6 X2+X6
SA6 A1 STORE IN DISPLAY BUFFER
SA5 A5+AAMQFL+AIBFL GET *AMOQ* FET POINTERS
SA2 A5+B1
SX2 X2 FIRST
SA3 A2+B1 IN
SA4 A3+B1 OUT
SA1 A4+B1
SX1 X1 LIMIT
IX6 X3-X4
IX4 X1-X4 LIMIT-OUT
PL X6,FCD4 IF IN .GE. OUT
IX3 X3-X2 IN - FIRST
IX6 X3+X4 REQUESTS IN *AMOQ*
FCD4 BX1 X6
RJ CDD CONVERT TO DECIMAL DISPLAY
SA1 KDAC NUMBER OF TRANSACTIONS IN OUTPUT QUEUE
BX2 X0*X1 EXTRACT *KDL* COORDINATES
BX6 -X0*X6
BX6 X2+X6
SA6 A1 STORE IN DISPLAY
SA5 A5+AAMQFL+AOBFL+1 POSITION TO FIRST *TDRF*
* REENTRY POINT.
*
* ENTRY (A5) = ADDRESS OF THE NEXT *TDRF* TO DISPLAY.
* (X5) = FIRST WORD OF THE NEXT *TDRF* TO DISPLAY.
FCD5 SB3 3 DATA BASES PER DISPLAY LINE
SA4 KDAD-2
SB4 10 NUMBER OF LINES PER DISPLAY
SA3 A4+1 *KDAD*-1
BX6 X3
MX0 TDIDN
SA6 A3+ IN CASE OF NO DATA BASES
FCD6 ZR X5,FCD9 IF NO DATA BASES
SA3 A5+TDODW
SA4 A4+2 ADDRESS IN DISPLAY BUFFER
SA2 A5+TDIDW
BX6 X0*X2
LX4 59-35
SA1 A5+TDSDW
BX4 -X0*X4
BX6 X4+X6 INSERT DATA BASE NAME INTO THE LINE
LX6 35-59
SA6 A4
LX3 59-TDODS
SB6 B0 INITIALIZE STATUS = UP
NG X1,FCD7 IF DATA BASE DOWN
LX1 TDSDS-TDSIS
PL X1,FCD8 IF NOT IDLE
SB6 B1 STATUS = IDLE
EQ FCD8 SET STATUS IN DISPLAY
FCD7 SB6 B1+B1 STATUS = DOWN
PL X3,FCD8 IF NOT OPERATOR DOWN
SB6 B6+B1 STATUS = OPERATOR DOWN
FCD8 SA3 FCDA+B6 GET STATUS
BX6 X3
SA6 A6+B1 STORE IN DISPLAY BUFFER
SB3 B3-1
SA5 A5+TDRFE NEXT *TDRF*
NE B3,FCD6 IF MORE TO GO IN THIS LINE
SB3 3
SB4 B4-1 DECREMENT LINE COUNT
NE B4,FCD6 IF DISPLAY NOT FULL
ZR X5,FCD9 IF ALL DATA BASES DISPLAYED
SA2 MORE
BX6 X2
SX7 A5
SA6 KDAE+1 INDICATE MORE TO BE DISPLAYED
SA7 NPAG SAVE FWA FOR NEXT PAGE
SX7 FCD5
SA7 PAGE SAVE RESTART ADDRESS FOR PAGING
SX1 KDA ADDRESS OF K-DISPLAY CONTROL WORD
EQ TPA GO TO TERMINATION PROCESSOR
FCD9 SA2 BLNK BLANK OUT UNUSED PART OF DISPLAY
SX7 FCD
SA7 PAGE ALLOW FORWARD PAGING TO ROLL BACK
SX4 B3+
MX0 24
LX4 1 CONVERT DATA BASES/LINE TO WORDS/LINE
SX1 KDA *K-DISPLAY* CONTROL WORD
SB3 X4+
SB4 B4+1 BLANK OUT *MORE* LINE
FCD10 EQ B4,TPA IF ALL LINES BLANKED
SB6 B3-6
NE B6,FCD11 IF NOT FIRST WORD OF DISPLAY LINE
SA4 A6+B1
BX6 X0*X4 RETAIN *DSD* CO-ORDINATES
BX3 -X0*X2
BX6 X6+X3
SA6 A4+
EQ FCD12 CONTINUE WITH THE NEXT WORD
FCD11 BX6 X2
SA6 A6+1
FCD12 SB3 B3-B1
NE B3,FCD10 IF MORE WORDS IN LINE
SB4 B4-B1 DECREMENT LINE COUNT
SB3 6 WORDS PER DISPLAY LINE
EQ FCD10 BLANK NEXT WORD
* TABLE OF DATA BASE STATUSES.
FCDA BSS 0
LOC 0
DATA 10H UP
DATA 10H IDLE
DATA 10H DOWN
DATA 10H OP-DOWN
LOC *O
FDD SPACE 4,30
** FDD - FORMAT DATA BASE DISPLAY.
*
* FDD EXTRACTS RAW DATA FROM THE *TDRF*, *TARF*, *TQRF* TABLES
* AND FORMATS A DATA BASE STATUS DISPLAY SUITABLE FOR THE
* OPERATOR CONSOLE OR USER TERMINAL. IF THE DISPLAY IS TO
* BE SENT TO A TERMINAL, DISPLAY LINES MAY ROLL OFF
* THE TOP OF THE SCREEN. DUE TO THE LARGE NUMBER OF
* TERMINAL TYPES, NO ATTEMPT IS MADE TO PREVENT THIS.
*
* ENTRY BADR = FWA OF TABLES.
*
* RE-ENTRY AT *FDD4*, *FDD14*, AND *FDD15*.
* (A5) = FWA OF NEXT *TLNT*.
* (X5) = FIRST WORD OF *TLNT*.
*
* EXIT TO *TPA* IF TAF ORIGIN.
* (X1) = ADDRESS OF K-DISPLAY CONTROL WORD.
* TO *TPB* IF TERMINAL ORIGIN.
* (X1) = FWA OF SEND BUFFER.
* (X5) = NUMBER OF WORDS TO SEND.
*
* USES X - ALL.
* A - ALL.
* B - ALL.
*
* CALLS CDD, SFN.
*
* MACROS MOVE.
FDD BSS 0 ENTRY
SX6 FDD
SA6 FPAG SET PROCESSOR ADDRESS
SA6 PAGE
SX6 KDB *K-DISPLAY* CONTROL WORD
SX7 KDBD *K-DISPLAY* ERROR LINE
SA6 CWKD
SA7 EAKD
SX6 KDBE *K-DISPLAY* INPUT LINE
SA6 IAKD
SX6 B1+ -C- FORMAT DISPLAY
SA6 DSTP
SA1 BADR+TDSDW
SA2 BADR+TDIDW
MX0 12
BX4 X0*X2 DATA BASE NAME
LX4 -12
LX0 -12
SA3 KDBG+2
BX6 -X0*X3 MASK OUT ANY PREVIOUS NAME
BX6 X6+X4 MERGE IN CURRENT NAME
SA6 A3 STORE IN DATA BASE STATUS HEADING
SB6 B0 PRESET STATUS = UP
NG X1,FDD1 IF FILE DOWN
LX1 TDSDS-TDSIS
PL X1,FDD2 IF NOT IDLE
SB6 B1+ SET STATUS = IDLE
EQ FDD2 STORE STATUS
FDD1 SA2 BADR+TDODW OPERATOR DOWN INDICATOR
SB6 B1+B1
LX2 59-TDODS
PL X2,FDD2 IF NOT OPERATOR DOWN
SB6 3
FDD2 SA3 FDDE+B6 GET STATUS MESSAGE
LX3 6
SX6 1R=&1R
LX6 54
BX6 X6-X3
SA6 KDBH+2 STORE IN DATA BASE STATUS HEADING
SA1 BADR+TDRFE+1
NZ X1,FDD3 IF AFTER IMAGE RECOVERY FILE EXISTS
SA2 BLNK
SA1 A1+B1 FWA OF FIRST *TLNT*
BX6 X2
SA6 KDBG+5 BLANK OUT AFTER IMAGE RECOVERY FILE NAME
SA6 KDBH+5 AND PRU-S REMAINING
MOVE KDBFW,KDBF,KDBA STORE DATA BASE STATUS HEADING
SA5 BADR+DST1L+TLFNW FWA OF 1ST *TLNT* FILE NAME
EQ FDD13 FORMAT FILE LIST
FDD3 SA1 A1+TAFFW
MX0 42
BX1 X0*X1 AFTER IMAGE RECOVERY FILE NAME
SA2 FDDD
BX6 X1+X2 PAD NAME WITH BLANKS
LX6 -6
MX0 TACPN
SA6 KDBG+5 STORE IN DATA BASE STATUS HEADING
SA1 BADR+TDRFE+1+TACPW
LX1 59-TACPS
BX1 X0*X1
LX1 TACPN
RJ CDD CONVERT UNUSED PRU COUNT
BX6 X4
LX6 -6
MX0 TQFFN
SA6 KDBH+5 STORE IN DATA BASE STATUS HEADING
MOVE KDBFW,KDBF,KDBA STORE DATA BASE STATUS HEADING
MOVE KDBIW,KDBI,KDBB STORE BEFORE IMAGE FILE HEADER
SA5 A1+TARFE-TACPW+1
SB4 KFNL-KDBFL-KDBIL NUMBER OF DISPLAY LINES
SX6 1R
LX6 59-5
SA6 KDBB+KDBIW-1
EQ FDD5 DISPLAY *BRF-S*
* RE-ENTRY POINT.
*
* ENTRY (A5) = ADDRESS OF THE NEXT *TLNT* TO DISPLAY.
* (X5) = FIRST WORD OF THE NEXT *TLNT* TO DISPLAY.
FDD4 MOVE KDBKW,KDBK,KDBA STORE FILE AND STATUS SUB-HEADING
SX6 1R
LX6 59-5
SA6 KDBA+KDBKW-1
SB4 KFNL-KDBKL NUMBER OF DISPLAY LINES
FDD5 SB3 6 NUMBER OF WORDS PER DISPLAY LINE
FDD6 SA5 A5+TQSTW *BRF* STATUS WORD
SA2 A5+TQFFW-TQSTW *BRF* FILE NAME
MX0 TQFFN
BX1 X0*X2
RJ SFN
LX6 41-59
SA6 A6+B1 STORE *BRF* FILE NAME
SA3 FDDA STATUS = UP
PL X5,FDD7 IF *BRF* UP
SA3 FDDB STATUS = DOWN
FDD7 BX6 X3
SA6 A6+B1 STORE STATUS
SB3 B3-2 DECREMENT COUNT
SA5 A5+TQRFE-TQSTW NEXT *BRF*
ZR X5,FDD8 IF NO MORE *BRF-S*
NE B3,FDD6 IF MORE *BRF-S* THIS DISPLAY LINE
SB4 B4-1 DECREMENT THE LINE COUNT
SX6 1R
LX6 59-5
SA6 A6+B1 SKIP OVER END OF LINE
NE B4,FDD5 IF DISPLAY NOT FULL
SX6 FDD4 RE-ENTRY ADDRESS
EQ FDD20 PROCESS NEXT PAGE
* DISPLAY *AFTER IMAGE RECOVERY FILES*.
FDD8 SB4 B4-B1 DECREMENT DISPLAY LINE COUNT
SA2 BLNK
BX6 X2
ZR B3,FDD10 IF DISPLAY LINE FULL
FDD9 SA6 A6+1 BLANK OUT REST OF LINE
SA6 A6+1
SB3 B3-2
NE B3,FDD9 IF MORE TO BLANK
FDD10 SB5 6
LT B4,B5,FDD11 IF NOT ENOUGH ROOM ON CURRENT PAGE
SX5 A6+2 SKIP OVER END OF LINE
MOVE KDBJW,KDBJ,X5 MOVE FILE HEADING TO DISPLAY
SB4 B4-KDBJL DECREMENT LINE COUNT
SB5 X5+KDBJW FWA TO STORE FILE NAMES
SA5 BADR+DST1L+TLFNW FWA OF FIRST *TLNT* FILE NAME
EQ FDD16 FORMAT FILE LIST
FDD11 ZR B4,FDD12 IF ALL LINES PROCESSED
SX6 1R
LX6 59-5
SA6 A6+B1 END OF LINE
SB3 6 RE-INITIALIZE COUNT
EQ FDD8 BLANK OUT NEXT LINE
FDD12 SX6 FDD15 RE-ENTRY ADDRESS
SA5 BADR+DST1L+TLFNW FWA OF FIRST *TLNT* FILE NAME
EQ FDD20 PROCESS NEXT PAGE
FDD13 MOVE KDBJW,KDBJ,KDBB STORE DATA BASE FILE HEADER
SB5 KDBB+KDBJW FWA TO STORE FILE NAMES
SB4 KFNL-KDBFL-KDBJL NUMBER OF DISPLAY LINES
EQ FDD16 DISPLAY DATA BASE FILES
* RE-ENTRY POINTS.
*
* ENTRY (A5) = ADDRESS OF THE NEXT *TLNT* TO DISPLAY.
* (X5) = FIRST WORD OF THE NEXT *TLNT* TO DISPLAY.
FDD14 MOVE KDBKW,KDBK,KDBA STORE FILE AND STATUS SUB-HEADING
SB5 KDBA+KDBKW FWA TO STORE FILE NAMES
SB4 KFNL-KDBKL NUMBER OF DISPLAY LINES
EQ FDD16 DISPLAY DATA BASE FILES
FDD15 MOVE KDBJW,KDBJ,KDBA STORE DATA BASE FILE HEADER
SB5 KDBA+KDBJW FWA TO STORE FILE NAMES
SB4 KFNL-KDBJL NUMBER OF DISPLAY LINES
FDD16 MX0 TLFNN
SB3 6 WORDS PER DISPLAY LINE
FDD17 BX1 X0*X5
RJ SFN
LX6 41-59
SA2 A5+TLFDW-TLFNW STATUS WORD
LX2 59-TLFDS
SB6 B0+ STATUS = UP
NG X2,FDD18 IF FILE DOWN
LX2 TLFDS-TLFIS
PL X2,FDD19 IF FILE NOT IDLE
SB6 B1 STATUS = IDLE
EQ FDD19 GET STATUS
FDD18 LX2 TLFDS-TLFES
SB6 2 STATUS = DOWN
PL X2,FDD19 IF NOT DUE TO *CRM* ERROR
SB6 B6+2 STATUS=*CRM* ERROR
FDD19 SA3 FDDE+B6 GET STATUS
BX7 X3
SA6 B5 STORE FILE NAME
SA7 A6+1
SB3 B3-2
SB5 B5+2 ADDRESS FOR NEXT FILE NAME
SA5 A5+TLNTE-TLFNW NEXT *TLNT*
ZR X5,FDD21 IF END
NE B3,FDD17 IF MORE FILES THIS DISPLAY LINE
SB3 6
SB4 B4-B1 DECREMENT LINE COUNT
SB5 B5+B1 ADDRESS OF NEXT DISPLAY LINE
NE B4,FDD17 IF DISPLAY NOT FULL
SX6 FDD14 RE-ENTRY ADDRESS
* PROCESS NEXT PAGE.
FDD20 SA6 PAGE
SA2 MORE
BX6 X2
SX7 A5
SX1 KDB *K-DISPLAY* CONTROL WORD
SA6 KDBC+1 INDICATE MORE FILES
SA7 NPAG NEXT ADDRESS IN THE BUFFER
SA2 ORIG
ZR X2,TPA IF *TAF* ORIGIN
SX1 KDBA FWA OF SEND BUFFER
SX5 KDBC-KDBA+2 WORDS TO SEND TO TERMINAL
EQ TPB SEND DISPLAY TO TERMINAL
* BLANK OUT UNUSED PART OF LAST PAGE.
FDD21 SA2 BLNK BLANK OUT UNUSED PART OF DISPLAY
BX6 X2
SX7 FDD
SA7 PAGE ALLOW FORWARD PAGING TO ROLL BACK
SB4 B4+1 BLANK OUT *MORE* LINE
SX5 B5-KDBA+1 WORDS TO SEND
FDD22 NE B3,FDD23 IF NOT END OF DISPLAY LINE
SB3 6
SB5 B5+1 SKIP OVER END OF LINE
SB4 B4-1 DECREMENT THE LINE COUNT
FDD23 LE B4,FDD24 IF ALL LINES PROCESSED
SA6 B5+
SB5 B5+B1
SB3 B3-B1
EQ FDD22 BLANK NEXT WORD
FDD24 SX1 KDB
SA2 ORIG
ZR X2,TPA IF *TAF* ORIGIN
SX1 KDBA FWA OF SEND BUFFER
EQ TPB SEND DISPLAY TO TERMINAL
FDDA DATA 10H UP *BRF* STATUS *UP*
FDDB DATA 10H DOWN *BRF* STATUS DOWN
FDDC CON 0 DISPLAY ADDRESS FOR FILE NAMES
FDDD VFD 42/0,18/3L
* TABLE OF DATA BASE FILE STATUSES.
FDDE BSS 0
LOC 0
DATA 10H UP FILE UP
DATA 10H IDLE FILE IDLE
DATA 10H DOWN FILE DOWN FOR BATCH RECOVERY
DATA 10H O-DOWN FILE DOWNED BY OPERATOR COMMAND
DATA 10H E-DOWN FILE DOWN DUE TO *CRM* ERROR
LOC *O
FFD SPACE 4,25
** FFD - FORMAT FILE DISPLAY.
*
* FFD EXTRACTS RAW DATA FROM THE *TLNT* AND COUNT OF USERS AND
* LOCKS ON THE FILE, AND FORMATS A DISPLAY SUITABLE FOR THE
* OPERATOR CONSOLE OR USER TERMINAL.
*
* ENTRY BADR = FWA OF *TLNT*.
*
* EXIT TO *TPA* IF TAF ORIGIN.
* (X1) = ADDRESS OF K-DISPLAY CONTROL WORD.
* TO *TPB* IF TERMINAL ORIGIN.
* (X1) = FWA OF *SEND* BUFFER.
* (X5) = NUMBER OF WORDS TO SEND.
*
* USES X - 0, 1, 2, 4, 5, 6, 7.
* A - 1, 2, 5, 6, 7.
* B - 6, 7.
*
* CALLS CDD, DXB, SFN.
*
* MACROS MOVE.
FFD BSS 0 ENTRY
SX6 FFD
SA6 FPAG SET PROCESSOR ADDRESS
SA6 PAGE
SX6 KDC *K-DISPLAY* CONTROL WORD
SX7 KDCM *K-DISPLAY* ERROR LINE
SA6 CWKD
SA7 EAKD
SX6 KDCN *K-DISPLAY* INPUT LINE
SA6 IAKD
SX6 B1 -C- FORMAT DISPLAY
MX0 42
SA6 DSTP
SA1 BADR+TLFNW
BX1 X0*X1 FILE NAME
SB6 B0 PRESET STATUS = UP
RJ SFN SPACE FILL NAME
LX6 -6
SA6 KDCB+3 STORE IN DISPLAY BUFFER
SA1 BADR+TLFDW FILE STATUS
NG X1,FFD1 IF FILE DOWN
LX1 TLFDS-TLFIS
PL X1,FFD2 IF FILE NOT IDLE
SB6 B1+ SET STATUS IDLE
EQ FFD2 GET STATUS MESSAGE
FFD1 LX1 TLFDS-TLFES
SB6 B1+B1 SET STATUS = DOWN
PL X1,FFD2 IF NOT DUE TO *CRM* ERROR
SB6 3 SET STATUS = *CRM* ERROR*
FFD2 SA2 FFDA+B6 GET STATUS
BX6 X2
SA6 KDCD+3 STORE IN DISPLAY BUFFER
SA1 BADR+TLNTE+1 COUNT OF ACTIVE FILE USERS
RJ CDD CONVERT TO DECIMAL DISPLAY
LX4 -18
MX0 -54
SA5 FFDB
BX4 -X0*X4
BX6 X4+X5
SA6 KDCK+3 STORE IN DISPLAY BUFFER
SA1 A1+1 COUNT OF LOCKS
RJ CDD CONVERT TO DECIMAL DISPLAY
LX4 -18
BX4 -X0*X4
BX6 X4+X5
SA6 KDCL+3 STORE IN DISPLAY BUFFER
SA1 BADR+TLRFW RECOVERABILITY FLAG
SB6 B0+
LX1 59-TLRFS
MX0 TLPNN
NG X1,FFD4 IF FILE RECOVERABLE
SB6 B1+
FFD4 SA2 FFDC+B6
SA1 BADR+TLPNW PACK NAME
BX6 X2
SA6 KDCE+3 RECOVERABILITY TO DISPLAY BUFFER
BX1 X0*X1
RJ SFN SPACE FILL EVEN IF PACK NAME ABSENT
LX6 -6
SA6 KDCF+3 PACK NAME TO DISPLAY BUFFER
MX0 TLDVN
SA1 BADR+TLDVW DEVICE TYPE
LX1 59-TLDVS
BX6 X0*X1
NZ X6,FFD5 IF DEVICE TYPE PRESENT
SA1 FFDD
BX6 X1
SA6 KDCG+3 STORE DEFAULT IN DISPLAY
EQ FFD6 PROCESS ATTACH MODE
FFD5 LX6 -6
SA5 BADR+TLUNW NUMBER OF UNITS ON DEVICE
SA6 KDCG+3 SAVE DEVICE TYPE IN DISPLAY BUFFER
LX5 59-TLUNS
MX0 TLUNN
BX5 X0*X5
SB7 -B1
RJ DXB
MX0 24
BX6 X0*X6
SA2 KDCG+3 PICK DEVICE TYPE
LX6 24
BX6 X2+X6 DEVICE TYPE AND NO. OF UNITS
SA6 A2+
FFD6 SB6 4
SA2 FFDK
MX0 -3
LX2 3
SA1 BADR+TLMDW PICK ATTACH MODE CODE
MX6 TLMDN
LX1 59-TLMDS
BX1 X6*X1
LX1 TLMDN
FFD7 BX5 -X0*X2
BX6 X5-X1
ZR X6,FFD8 IF ATTACH MODE CODE FOUND
SB6 B6-B1
LX2 15
NZ B6,FFD7 IF NOT ALL CODES EXAMINED
SA2 FFDM PUT BLANKS FOR ATTACH MODE MNEMONICS
FFD8 MX7 12
BX1 X7*X2 ISOLATE MNEMONIC ATTACH MODE
RJ SFN PAD WITH BLANKS
LX6 -6
SA6 KDCH+3 STORE ATTACH MODE MNEMONIC
MX0 TLKLN
SA1 BADR+TLKLW SIZE OF PRIMARY KEY
LX1 59-TLKLS
BX1 X0*X1
LX1 TLKLN RIGHT JUSTIFY THE NUMBER
RJ CDD CONVERT TO DECIMAL
BX6 X4
LX6 35-59
SA6 KDCI+4 STORE IN DISPLAY BUFFER
MX0 TLNAN
SA1 BADR+TLNAW NUMBER OF ALTERNATE KEYS
LX1 59-TLNAS
BX1 X0*X1
LX1 TLNAN
RJ CDD CONVERT TO DISPLAY
MX0 -36
SA2 FFDE
BX6 X4
LX6 35-59
BX6 -X0*X6
BX7 X2+X6
SA7 KDCJ+4 STORE IN DISPLAY BUFFER
SX1 KDC K-DISPLAY CONTROL WORD
SA2 ORIG
ZR X2,TPA IF TAF ORIGIN
SX1 KDCA FWA OF SEND BUFFER
SX5 KDC1L WORDS TO SEND
EQ TPB SEND DISPLAY TO TERMINAL
* TABLE OF FILE STATUSES.
FFDA BSS 0
LOC 0
DATA 10H UP
DATA 10H IDLE
DATA 10H DOWN
DATA 10H E-DOWN
LOC *O
FFDB DATA 1L=
FFDC DATA 10H YES
DATA 10H NO
FFDD DATA 10H DEFAULT
FFDE DATA 4LS =
FFDK VFD 3/PTRD,12/2LR ,3/PTWR,12/2LW ,3/PTMD,12/2LM
VFD 3/PTRM,12/2LRM
FFDL DATA 7LKEYS =
FFDM DATA 10H
IBR SPACE 4,15
** IBR - INCORRECT *BTRAN* REQUEST.
*
* THIS SUBROUTINE JOURNALS AN INCORRECT *SIC* REQUEST
* IN *JOUR0* AND TERMINATES THE TASK.
*
* ENTRY (X3) = ERROR CODE.
* COMMUNICATION BLOCK CONTAINS INCORRECT REQUEST.
*
* USES X - 0, 1, 3, 6.
* A - 1, 6.
* B - 2, 3.
*
* MACROS CEASE, JOURNL.
IBR BSS 0 ENTRY
SB2 3
LX3 2
MX0 -12
SA1 IBRA+X3 ERROR MESSAGE ADDRESS
SB3 TMSW
IBR1 SA3 A1+B2 MOVE MESSAGE TO JOURNAL BUFFER
BX6 X3
SA6 IBRB+B2
SB2 B2-1
PL B2,IBR1 IF NOT ENTIRE MESSAGE MOVED
SA1 TNAM
BX1 -X0*X1
SX6 IBRB
SX0 X1-5
NG X0,IBR2 IF COMMUNICATION BLOCK 4 WORDS OR LESS
SX1 4
IBR2 SB2 X1
SX1 X1+4 FORM PARAMETER WORD FOR JOURNAL CALL
LX1 18
BX6 X1+X6
SB2 B2-B1
SA6 PADR
IBR3 SA1 B3+B2 COPY COMMUNICATION BLOCK
BX6 X1
SA6 IBRC+B2
SB2 B2-1
PL B2,IBR3 IF MORE WORDS IN THE COMMUNICATION BLOCK
JOURNL PADR
CEASE END TASK
IBRA BSS 0
DATA 40HCRMTASK- INCORRECT REQUEST.
DATA 40HCRMTASK- DATA BASE/FILE NAME UNKNOWN.
DATA 40HCRMTASK- INCORRECT TT SEQUENCE NUMBER.
DATA 40HCRMTASK- DATA BASE DOWNED BY OPERATOR.
DATA 40HCRMTASK- NOT ALL DATA BASE FILES UPPED.
DATA 40HCRMTASK- DATA BASE/FILE CANNOT BE UPPED.
DATA 40HCRMTASK- DATA BASE/FILE BEING IDLED.
DATA 40HCRMTASK- INCORRECT REQUEST FORMAT.
IBRB BSS 4 ERROR MESSAGE AREA
IBRC BSSZ 4
IBRE BSS 0 ERROR CODES
LOC 0
IER0 BSS 1 INCORRECT REQUEST
IER1 BSS 1 DATA BASE/FILE UNKNOWN
IER2 BSS 1 INCORRECT TT SEQUENCE
IER3 BSS 1 DATA BASE/FILE DOWNED BY OPERATOR
IER4 BSS 1 NOT ALL FILES UPPED
IER5 BSS 1 DATA BASE/FILE CANNOT BE UPPED
IER6 BSS 1 IDLE DATA BASE/FILE
IER7 BSS 1 REQUEST FORMAT ERROR
LOC *O
ORG IBRE
ITU SPACE 4,20
** ITU - INSERT TERMINATOR AND UNPACK MESSAGE.
*
* THIS SUBROUTINE DETERMINES WHERE THE TERMINAL MESSAGE
* ENDS AND INSERTS A TERMINATOR THEN UNPACKS THE MESSAGE
* TO RA+2.
*
* ENTRY DATA IN MESSAGE AREA.
*
* EXIT TERMINATOR IS INSERTED IN MESSAGE AND IT IS
* UNPACKED TO RA+2.
*
* ERROR TO *TTE* IF UNPACK ERRORS.
*
* USES X - 0, 1, 2, 5, 6, 7.
* A - 1, 2, 5, 7.
* B - 1, 2, 3, 7.
*
* CALLS UPC.
ITU SUBR ENTRY/EXIT
SA2 CBSYW
MX0 -12
BX2 -X0*X2 NUMBER OF WORDS IN MESSAGE
SB2 X2+TMSW-2 LWA OF MESSAGE
MX0 -6
SA1 B2+B1 LWA OF MESSAGE
SA2 A1-B1
SX6 1R.
BX7 -X0*X2
NZ X1,ITU1 IF LAST WORD CONTAINS NON ZERO CHARACTERS
NZ X7,ITU1 IF NEXT TO LAST WORD IS FULL
BX7 X2+X6
SA7 A2
EQ ITU3 UNPACK
ITU1 SB2 B2+B1
SB3 CMBK+CMBL-1 LWA OF COMMUNICATION BLOCK
SA1 B2 CURRENT WORD TO CHECK
GE B2,B3,ITU3 IF MESSAGE EXCEEDED LIMIT
SB3 60
ITU2 LX1 6
BX2 -X0*X1
SB3 B3-6
NG B3,ITU1 IF END OF WORD
NZ X2,ITU2 IF NOT END OF MESSAGE
BX1 X1+X6 INSERT TERMINATOR
LX7 X1,B3
SA7 A1+
ITU3 SA5 TMSW FWA OF MESSAGE
SB7 2
RJ UPC UNPACK TERMINAL COMMAND
SB2 ER5 *INCORRECT COMMAND*
NZ X6,TTE IF UNPACK ERRORS
EQ ITUX RETURN
SEM SPACE 4,20
** SEM - SET ERROR MESSAGE.
*
* SEM SETS AN ERROR MESSAGE ON THE *K-DISPLAY*.
*
* ENTRY (B2) = INDEX INTO TABLE MESSAGE ADDRESSES.
* (DSTP) = *K-DISPLAY* FORMAT FLAG.
* (EAKD) = *K-DISPLAY* ERROR LINE.
* (CWKD) = ADDRESS OF *K-DISPLAY* CONTROL WORD.
*
* EXIT (X1) = ADDRESS OF *K-DISPLAY* CONTROL WORD.
*
* USES X - 1, 2, 3.
* A - 1, 3.
* B - 5.
*
* MACROS MOVE.
SEM SUBR ENTRY/EXIT
SB5 ERK
SA1 DSTP
ZR X1,SEM1 IF FORMATTED *K-DISPLAY*
SB5 ERT
SEM1 SA1 B5+B2 GET ERROR MESSAGE
SX2 X1 MESSAGE ADDRESS
SA3 EAKD *K-DISPLAY* ERROR LINE
AX1 18 MESSAGE LENGTH
MOVE X1,X2,X3 MOVE MESSAGE TO DISPLAY
SA1 CWKD ADDRESS OF *K-DISPLAY* CONTROL WORD
EQ SEMX RETURN
TPR SPACE 4,10
*** TERMINATION PROCESSING ROUTINES.
TPA SPACE 4,15
** TPA - TERMINATION PROCESSOR FOR *K-DISPLAY* COMMAND.
*
* ENTRY (X1) = *K-DISPLAY* CONTROL WORD.
*
* EXIT TO *CVL*, IF NEW COMMAND ENTERED.
* (B3) = FWA OF VALID COMMAND TABLE.
* TO *CRS*, IF REFRESHING *CRMSTAT* DISPLAY.
* (TMSW+1) = PARAMETER OF LAST *CRMSTAT* COMMAND.
*
* USES X - 1, 2, 3, 4, 6.
* A - 1, 2, 4, 6.
* B - 3.
*
* MACROS SYSTEM.
TPA BSS 0 ENTRY
BX6 X1
SA6 TPAA SAVE THE DISPLAY BUFFER ADDRESS
SA4 IAKD
MOVE 5,TDUA,X4 ECHO *DSD* INPUT TO *K-DISPLAY*
SX6 B0 CLEAR MESSAGE AREA
SA6 TMSW
SA6 A6+B1
SA1 TPAA RESTORE THE DISPLAY BUFFER ADDRESS
TPA1 SYSTEM CTI,,X1,8 TAF FUNCTION - SET *K-DISPLAY*
SA1 TMSW
ZR X1,TPA3 IF NO NEW COMMAND
SX2 1R+
SX3 1R-
BX6 X1
IX2 X2-X1
IX3 X3-X1
LX6 54
SB3 CVLB
ZR X2,TPA2 IF *+*
ZR X3,TPA2 IF *-*
EQ CVL SEARCH FOR THE PROCESSOR
TPA2 SA6 TMSW
EQ CVL VALIDATE NEXT COMMAND
TPA3 SA2 RFRS
SA1 TPAA
ZR X2,TPA1 IF LAST COMMAND NOT *CRMSTAT*
SA2 A2+B1 PICK PARAMETER OF LAST *CRMSTAT*
BX6 X2
SA6 TMSW+1
EQ CRS RE-ISSUE *CRMSTAT* REQUEST
TPAA BSS 1 SAVE AREA FOR DISPLAY BUFFER ADDRESS
TPB SPACE 4,20
** TPB - TERMINATION PROCESSOR FOR TERMINAL DISPLAY.
*
* ENTRY (X1) = FWA OF SEND BUFFER.
* (X5) = NUMBER WORDS TO SEND.
*
* EXIT TO *CVL*.
* (B3) = FWA OF VALID COMMAND TABLE.
*
* ERROR TO *TTE*.
* (B2) = ERROR CODE.
*
* USES X - ALL.
* A - 1, 5, 6.
* B - 2, 3, 5, 6, 7.
*
* CALLS ITU.
*
* MACROS SEND, WAITINP.
TPB BSS 0 ENTRY
SX3 MAXWS MAXIMUM WORDS + 1 FOR A *SEND* REQUEST
SX4 X3-1
IX5 X5-X3
BX6 X1
LX6 30
MX0 1
SA6 PADR STORE MESSAGE ADDRESS
NG X5,TPB2 IF LESS THAN MAXIMUM WORDS TO SEND
LX0 -2 FLAG NOT LAST BLOCK
BX6 X0+X6
BX6 X6+X4
MX0 18
LX0 -12
SA6 A6+
LX4 30
TPB1 SEND PADR SEND DATA TO TERMINAL
SA1 PADR
BX2 -X0*X1
BX1 X0*X1
IX1 X1+X4 INCREMENT MESSAGE ADDRESS
BX6 X2+X1
SA6 A1
IX5 X5-X3
PL X5,TPB1 IF STILL .GT. MAXIMUM FOR SEND
TPB2 IX5 X5+X3 WORDS TO SEND
ZR X5,TPB2.1 IF WORD COUNT IS ZERO
MX0 18
LX0 -12
BX6 X0*X6
BX6 X6+X5
SA6 A6
SEND PADR SEND FINAL BLOCK
TPB2.1 SA1 MADB
BX6 X1
SA6 PADR
SEND PADR SEND MESSAGE
SX6 B0 CLEAR MESSAGE AREA
SA6 TMSW
SA6 A6+B1
SX6 300
SA6 TPBB
WAITINP TPBB WAIT FOR NEXT COMMAND
SA1 TMSW
SX1 X1-1
NZ X1,TPB3 IF NOT TIMEOUT
SB2 ER8 *CRMTASK TIMEOUT.*
EQ TTE TERMINATE TASK IN ERROR
TPB3 RJ ITU INSERT TERMINATOR AND UNPACK
SA1 B1+
SB5 TMSW
TPB4 SA1 A1+1 NEXT WORD
BX6 X1
SA6 B5
SB5 B5+1
SB6 B6-1
NE B6,TPB4 IF MORE WORDS TO MOVE
SB3 CVLB FWA OF TABLE OF VALID COMMANDS
SA1 TMSW
SX2 1R+
SX3 1R-
BX6 X1
IX2 X2-X1
IX3 X3-X1
LX6 59-5
ZR X2,TPB5 IF *+*
ZR X3,TPB5 IF *-*
EQ CVL VALIDATE COMMAND
TPB5 SA6 TMSW
EQ CVL VALIDATE COMMAND
TPBB CON 0 WAIT TIME IN SECONDS
TPD SPACE 4,10
** TPD - TERMINATION PROCESSOR TASK CEASE.
*
* ENTRY (ORIG) = ORIGIN CODE.
*
* USES X - 1, 6.
* A - 1, 6.
*
* MACROS CEASE, SEND.
TPD BSS 0 ENTRY
SA1 ORIG
SX1 X1-1
NZ X1,TPD1 IF NOT TERMINAL ORIGIN
SA1 MADA
BX6 X1
SA6 PADR
SEND PADR ISSUE TERMINATION MESSAGE
TPD1 CEASE END TASK
TTE SPACE 4,10
** TTE - TERMINATE TERMINAL IN ERROR.
*
* ENTRY (B2) = ERROR CODE.
*
* USES X - 1, 2, 6.
* A - 1, 6.
*
* MACROS CEASE, SEND.
TTE BSS 0 ENTRY
SA1 ERT+B2
SX2 X1 FWA OF THE MESSAGE
AX1 18 MESSAGE LENGTH
LX2 30
BX6 X2+X1
SA6 PADR
SEND PADR SEND ERROR MESSAGE
SA1 MADA
BX6 X1
SA6 PADR
SEND PADR SEND TERMINATION MESSAGE
CEASE TERMINATE TASK
ERK SPACE 4,10
* TABLE OF MESSAGE CODES FOR BOTH TERMINAL AND *K-DISPLAY*.
ERC BSS 0
LOC 0
ER0 BSS 1 *DATA BASE/FILE NAME UNKNOWN.*
ER1 BSS 1 *NOT ALL DATA BASE FILES UPPED.*
ER2 BSS 1 *DATA BASE/FILE CANNOT BE UPPED.*
ER3 BSS 1 *DATA BASE/FILE ALREADY DOWN OR IDLE.*
ER4 BSS 1 *INSUFFICIENT FL FOR THIS COMMAND.*
ER5 BSS 1 *INCORRECT COMMAND.*
ER7 BSS 1 *REQUEST COMPLETE.*
ER8 BSS 1 *CRMTASK TIMEOUT.* (TERMINAL ONLY)
LOC *O
ORG ERC RESET ORIGIN COUNTER
* ERROR MESSAGES FOR *K-DISPLAY*.
ERKA KDL 7,M,(DATA BASE/FILE NAME UNKNOWN.)
ERKAL EQU *-ERKA
ERKB KDL 7,M,(NOT ALL DATA BASE FILES UPPED.)
ERKBL EQU *-ERKB
ERKC KDL 7,M,(DATA BASE/FILE CANNOT BE UPPED.)
ERKCL EQU *-ERKC
ERKD KDL 7,M,(DATA BASE/FILE ALREADY DOWN OR IDLE.)
ERKDL EQU *-ERKD
ERKE KDL 7,M,(INSUFFICIENT FIELD LENGTH FOR THIS COMMAND.)
ERKEL EQU *-ERKE
ERKF KDL 7,M,(INCORRECT COMMAND.)
ERKFL EQU *-ERKF
ERKH KDL 7,M,(REQUEST COMPLETE.)
ERKHL EQU *-ERKH
* TABLE OF ERROR MESSAGE ADDRESSES AND LENGTHS.
ERK BSS 0
LOC 0
VFD 24/0,18/ERKAL,18/ERKA
VFD 24/0,18/ERKBL,18/ERKB
VFD 24/0,18/ERKCL,18/ERKC
VFD 24/0,18/ERKDL,18/ERKD
VFD 24/0,18/ERKEL,18/ERKE
VFD 24/0,18/ERKFL,18/ERKF
VFD 24/0,18/ERKHL,18/ERKH
LOC *O
ERT SPACE 4,10
* ERROR MESSAGES FOR TERMINAL.
ERTA DATA 50CDATA BASE/FILE NAME UNKNOWN.
ERTAL EQU *-ERTA
ERTB DATA 50CNOT ALL DATA BASE FILES UPPED.
ERTBL EQU *-ERTB
ERTC DATA 50CDATA BASE/FILE CANNOT BE UPPED.
ERTCL EQU *-ERTC
ERTD DATA 50CDATA BASE/FILE ALREADY DOWN OR IDLE.
ERTDL EQU *-ERTD
ERTE DATA 50CINSUFFICIENT FIELD LENGTH FOR THIS COMMAND.
ERTEL EQU *-ERTE
ERTF DATA 50CINCORRECT COMMAND.
ERTFL EQU *-ERTF
ERTH DATA 50CREQUEST COMPLETE.
ERTHL EQU *-ERTH
ERTI DATA 50CCRMTASK TIMEOUT.
ERTIL EQU *-ERTI
* TABLE OF ERROR MESSAGE ADDRESSES AND LENGTHS.
ERT BSS 0
LOC 0
VFD 24/0,18/ERTAL,18/ERTA
VFD 24/0,18/ERTBL,18/ERTB
VFD 24/0,18/ERTCL,18/ERTC
VFD 24/0,18/ERTDL,18/ERTD
VFD 24/0,18/ERTEL,18/ERTE
VFD 24/0,18/ERTFL,18/ERTF
VFD 24/0,18/ERTHL,18/ERTH
VFD 24/0,18/ERTIL,18/ERTI
LOC *O
SPACE 4
MSGA DATA 1L
DATA C*CRMTASK COMPLETE.*
MSGAL EQU *-MSGA
MSGB DATA 1L
DATA C*ENTER NEXT COMMAND...*
MSGBL EQU *-MSGB
MADA VFD 30/MSGA,30/MSGAL
MADB VFD 30/MSGB,30/MSGBL
KDA SPACE 4,10
* CRMSTAT K-DISPLAY.
KDA VFD 10/0,1/0,1/0,6/0,18/0,24/2 FORMAT CONTROL WORD
KDL 28,T,(CRM STATUS)
KDL 16,,(TRANSACTIONS IN INPUT QUEUE = )
KDAA KDL 47,K,( )
KDL 16,,(ACTIVE TRANSACTIONS =)
KDAB KDL 37,K,( )
KDL 16,,(TRANSACTIONS IN OUTPUT QUEUE = )
KDAC KDL 47,H,( )
KDL 6,K,(DATA DATA DATA)
KDL 6,H,(BASE STATUS BASE STATUS BASE STA
,TUS)
KDAD BSS 0 START OF VARIABLE DISPLAY
DUP KFNL-10,1 ASSIGN SPACE FOR DATA BASE NAMES/STATUSES
KDL 7,K,(
, )
KDAE KDL 5,K,(
, ) *MORE* LINE
KDAF KDL 7,M,(
, ) MESSAGE LINE
KDAG KDL 1,I,(
, ) KEYBOARD INPUT LINE
CON 0 END OF DISPLAY
KDB SPACE 4,10
* DATA BASE STATUS DISPLAY.
KDB BSS 0 ZERO BYTE FORMAT
VFD 10/0,1/0,1/1,1/1,5/0,18/0,24/2 FORMAT CONTROL WORD
KDBA BSS 0
DUP 5,1
DATA 60C
,
KDBB BSS 0
DUP 15,1
DATA 60C
,
KDBC DATA 60C
, *MORE* LINE
KDBD DATA 50C
, END OF MESSAGE LINE
KDBE DATA 50C
, END OF KEYBOARD INPUT LINE
CON 0
* DATA BASE STATUS HEADING.
KDBF DATA 60C
,
DATA 60C ---------------- CRM DATA BASE STATUS -----------
,-----
DATA 60C
,
KDBG DATA 60C DATA BASE NAME = AFTER IMAGE FILE =
,
KDBH DATA 60C DATA BASE STATUS = PRU-S REMAINING =
,
KDBFW EQU *-KDBF NUMBER OF WORDS
KDBFL EQU KDBFW/7 NUMBER OF LINES
ERRNZ KDBFL*7-KDBFW ASSUMES 7 WORDS PER DISPLAY LINE
* BEFORE IMAGE FILE HEADER.
KDBI DATA 60C
,
DATA 60C ------------- BEFORE IMAGE FILES STATUS --------
,------
DATA 60C FILE STATUS FILE STATUS FILE
,STATUS
DATA 60C
,
KDBIW EQU *-KDBI NUMBER OF WORDS
KDBIL EQU KDBIW/7 NUMBER OF LINES
ERRNZ KDBIL*7-KDBIW ASSUMES 7 WORDS PER DISPLAY LINE
* DATA BASE FILE HEADER.
KDBJ DATA 60C
,
DATA 60C --------------- DATA BASE FILES STATUS ---------
,------
DATA 60C FILE STATUS FILE STATUS FILE
,STATUS
DATA 60C
,
KDBJW EQU *-KDBJ NUMBER OF WORDS
KDBJL EQU KDBJW/7 NUMBER OF LINES
ERRNZ KDBJL*7-KDBJW ASSUMES 7 WORDS PER DISPLAY LINE
* FILE AND STATUS SUB-HEADING.
KDBK DATA 60C
,
DATA 60C FILE STATUS FILE STATUS FILE
,STATUS
DATA 60C
,
KDBKW EQU *-KDBK NUMBER OF WORDS
KDBKL EQU KDBKW/7 NUMBER OF LINES
ERRNZ KDBKL*7-KDBKW ASSUMES 7 WORDS PER DISPLAY LINE
KDC SPACE 4,10
* FILE STATUS DISPLAY.
KDC BSS 0 ZERO BYTE FORMAT
VFD 10/0,1/0,1/1,1/1,5/0,18/0,24/2 FORMAT CONTROL WORD
KDCA DATA 1L
DATA C* CRM FILE STATUS *
DATA 1L
KDCB DATA C* FILE NAME = *
KDCD DATA C* FILE STATUS = *
KDCE DATA C* RECOVERABLE = *
DATA 1L
KDCF DATA C* PACK NAME = *
KDCG DATA C* DEVICE TYPE = *
KDCH DATA C* ATTACH MODE = *
DATA 1L
KDCI DATA C* SIZE OF PRIMARY KEY = *
KDCJ DATA C* NUMBER OF ALTERNATE KEYS = *
DATA 1L
KDCK DATA C* ACTIVE USERS = *
KDCL DATA C* ACTIVE LOCKS = *
KDC1L EQU KDCL+3-KDCA
DUP 5,1
DATA 1L
KDCM DATA 50C
, END OF MESSAGE LINE
KDCN DATA C*
, * END OF KEYBOARD INPUT LINE
CON 0 END OF DISPLAY
SPACE 4,10
** MENU DISPLAY.
KDE BSS 0
VFD 10/0,1/0,1/0,6/0,18/0,24/2
KDL 25,T,(CRMTASK COMMANDS)
KDL 8,K,(CRMSTAT SEE ALL CRM DATA BASES.)
KDL 8,K,(CRMSTAT,DB SEE CRM DATA BASE DB.)
KDL 8,H,(CRMSTAT,DBPFN SEE CRM DATA BASE FILE DBPFN.)
KDL 8,K,(DBDOWN,DB DOWN DATA BASE DB.)
KDL 8,K,(DBDOWN,DBPFN DOWN DATA BASE FILE DBPFN.)
KDL 8,K,(DBUP,DB UP DATA BASE DB.)
KDL 8,H,(DBUP,DBPFN UP DATA BASE FILE DBPFN.)
KDL 8,K,(END END CRMTASK PROCESSING.)
KDL 8,K,(MENU SEE THIS DISPLAY.)
KDL 8,K,(+ PAGE LEFT SCREEN FORWARD.)
KDL 8,K,(- PAGE LEFT SCREEN BACKWARD.)
KDEA KDL 7,M,(
, ) MESSAGE LINE
KDEB KDL 1,I,(
, ) KEYBOARD INPUT LINE
CON 0 END OF DISPLAY
SPACE 4,10
* BLANK LINES FOR *K-DISPLAY*.
KBLC DATA 50H
KBLCL EQU *-KBLC
KBLF KDL 7,M,(
, )
KBLFL EQU *-KBLF
SPACE 4,10
* Y-COORDINATE TABLE.
KBLG KDL *
PRK HERE REMOTE BLOCK FROM *COMCDCP*
SPACE 4,10
*** COMMON DECKS.
*CALL COMCCDD
*CALL COMCDCP
*CALL,COMCDXB
*CALL COMCMVE
*CALL COMCSFN
*CALL COMCSNM
*CALL COMCSYS
*CALL COMCUPC
*CALL,COMSPFM
BUF EJECT
* DEFINE BUFFER SIZES FOR *AAMI* REQUESTS.
CST1L EQU CMDM*RMDM*TSEQE+TSEQE+1+2*AAMQFL+AIBFL+AOBFL+1
CST2L EQU CMAXDB*TDRFE+1
DST1L EQU TDRFE+1+TARFE+1+BMAX*TQRFE+1
DST2L EQU CMAXNF*TLNTE+1
FSTBL EQU TLNTE+1+2+1
* DETERMINE MAXIMUM REQUIRED BUFFER SIZE.
.1 MAX CST1L,DST1L,FSTBL
.2 MAX CST2L,DST2L
BUFSIZE EQU .1+.2
* ALLOCATE BUFFER.
BADR BSSZ BUFSIZE+10B
SPACE 4,10
END CRMTASK