*DECK SSSPES
PROC SSSPES;
*IF,DEF,IMS
*TEXT
#
** SERVICES AND SCHEDULING OVERVIEW
*
*
* 1.0 INTRODUCTION
* 2.0 DESCRIPTION OF SERVICES
* 2.1 SCHEDULING OF PROCESSES
* 2.1.1 DESIGN CONSIDERATIONS/PHILOSOPHIES
* 2.1.2 STATUS WORK LIST ENTRY (SWLE)
* 2.1.3 WORK LIST ENTRY (WLE)
* 2.2 TABLE MANAGER (QUEUE MANAGER)
* 2.3 OVERLAY LOADING
* 2.4 TIMER SERVICES
* 2.5 UTILITIES
* 2.5.1 BIT MANIPULATION
* 2.5.2 CHARACTER CONVERSION
* 2.5.3 FILE FUNCTIONS
* 2.5.4 COMMAND PARSER/RECOGNIZER
* 2.5.5 AIP INTERFACE
* 3.0 DECK/ROUTINE NAMING CONVENTIONS
* 4.0 STRUCTURE CHARTS
* 4.1 AIP INTERFACE ROUTINE
* 4.2 CLOCK/TIMER ROUTINES
* 4.3 OVERLAY MANAGEMENT ROUTINES
* 4.4 COMMAND RECOGNITION ROUTINES
* 4.5 SEQUENCE ROUTINES
* 4.6 TABLE/QUEUE MANAGER ROUTINES
* 5.0 TABLE STRUCTURES
* 5.1 POINTER TABLE
* 5.2 WORKLIST REQUEST QUEUE
* 5.3 WORKLIST DEFINITION TABLE
* 5.4 QUEUE TO WORKLIST DEFINITION TABLE
* 5.5 STATUS WORKLIST DEFINITION
* 5.6 OVERLAY DEFINITION TABLE
* 5.7 OVERLAY CONTROL ITEMS
* 5.8 OVERLAY REQUEST TABLE
* 5.9 ROLLOUT TABLE
* 5.10 TIMER REQUEST BLOCK
* 5.11 CURRENT TIME AND DATE
* 5.12 TYPICAL QUEUE ENTRY
* 6.0 DEBUGGING TIPS
*E
*
*
* 1.0 INTRODUCTION
*
* SERVICES AND SCHEDULING IS A SET OF ROUTINES THAT ACT AS THE
* EXECUTIVE AND PROVIDES SERVICES/UTILITIES FOR NVF AND CS. THE
* FOLLOWING IS AN OVERVIEW OF THESE SERVICES, THE CONVENTIONS USED
* IN NAMING THE ROUTINES, STRUCTURE CHARTS, AND THINGS TO LOOK FOR
* WHEN ANALYZING A CS OR NVF DUMP.
*
*
* 2.0 DESCRIPTION OF SERVICES
*
* 2.1 SCHEDULING OF PROCESSES
*
* 2.1.1 DESIGN CONSIDERATIONS/PHILOSOPHIES
*
* THE PROGRAM (NVF OR CS) IS VIEWED BY SERVICES AND SCHEDULING AS A
* SET OF INDEPENDENT PROCESSORS. PROGRAM OPERATION IS DATA DRIVEN
* OR TRANSACTION DRIVEN, I.E. - THE PRESENCE OF DATA IS SUFFICIENT
* TO INDICATE THAT A PROCESSOR OF THAT DATA MUST BE STARTED UP. NO
* DATA MEANS THERE IS NO WORK TO DO.
*
* KEY TO THE UNDERSTANDING THESE PROGRAMS IS THEIR TRANSACTION
* PROCESSING NATURE AND THE DECOUPLING OF PROGRAM PARTS. SERVICE
* MESSAGES AND DATA ARE ROUTED TO PROCESSES VIA ENTRIES IN THE
* APPROPRIATE QUEUE. THESE PROCESSES ARE PREPARED TO HANDLE THE
* POSSIBILITIES AT A GIVEN POINT IN THE OVERALL PROTOCOL.
*
* THE SERVICE MESSAGES AND DATA FOR A PARTICULAR CONNECTION HAVE
* VERY LIMITED ASSOCIATION WITH OTHER CONNECTIONS AND PROTOCOLS
* (APPLICATION NETTING OFF, FAILING, ETC.) SO THIS DECOUPLING WILL
* WORK. THE OVERALL PROGRAM OPERATION IS LOOSELY TIED TOGETHER.
* EXAMINATION OF THE VARIOUS PROTOCOLS AND THE UNDERSTANDING OF
* THEIR RELATIONSHIPS, IF ANY, AND POSSIBLE INTERACTION WAS DONE AT
* DESIGN TIME TO ELIMINATE ANY PROBLEMS.
*
* THE SCHEDULING OF PROCESSES IS DONE BY TWO SEPERATE MECHANISMS:
* STATUS WORK LIST ENTRIES AND WORK LIST ENTRIES. THESE TWO METHODS
* ARE EXPLAINED IN THE NEXT TWO SECTIONS.
*
* 2.1.2 STATUS WORK LIST ENTRY (SWLE)
*
* STATUS WORK LIST ENTRIES ARE USED BY PROCESSES THAT MUST WAIT FOR
* EXTERNAL REQUESTS TO COMPLETE BEFORE PROCEEDING. ONCE THE REQUEST
* IS COMPLETE, A NEW REQUEST FOR THE SERVICE IS MADE, IF ONE IS
* AVAILABLE. THE PROCESSES CAN BE THOUGHT OF AS SEPARATE PROGRAMS
* THAT RUN CONSTANTLY ONCE THEY ARE STARTED AT INITIALIZATION TIME.
* THESE PROGRAMS DETERMINE THEMSELVES WHAT INDICATES THAT A REQUEST
* IS COMPLETE AND CONVEYS THIS TO THE STATUS WORK LIST PROCESSOR
* WHEN IT GOES INTO A STATE OF WAITING.
*
* THE STATUS WORKLIST PROCESSOR DOES NOT KNOW WHAT THE PROGRAM IS
* DOING. IT IS SIMPLY LOOKING FOR A CHANGE IN THE INITIAL VALUE
* WHEN THE SWLE REQUEST IS MADE. A CHANGE IN THE MEMORY LOCATION
* THAT IT IS MONITORING WILL PROMPT IT TO START UP THE WAITING
* PROGRAM. (NOTE: CURRENTLY NO MASKING OR IGNORING PARTS OF A
* WATCHED WORD IS PLANNED, BUT COULD BE IMPLEMENTED EASILY IF FOUND
* NECESSARY.)
*
* AN EXAMPLE MIGHT BE A PROCESS THAT READS RECORDS FROM A FILE UPON
* REQUEST. IN THE BEGINNING THE PROCESSOR, AT INITIALIZATION TIME,
* IS CALLED AND DETERMINES THAT THERE IS NO WORK IN PROGRESS AND NO
* REQUESTS TO START SO IT GOES INTO WAIT MODE AND INFORMS THE STATUS
* WORKLIST PROCESSOR TO RESTART IT WHEN AN ENTRY IS PLACED IN ITS
* INPUT QUEUE. AT THIS POINT IT IS NOT EXECUTING AS THE STATUS WORK
* LIST PROCESSOR IS DOING THE CHECKING FOR WORK TO BE DONE. IN
* PARTICULAR THE SWLP IS CHECKING THE ENTRY COUNT OF THE QUEUE TO
* BE NON-ZERO. ONCE AN ENTRY IS MADE IN THE QUEUE THE COUNTER IS
* BUMPED AND THE SWLP STARTS UP THE PROCESSOR. THE PROCESSOR
* REALIZES THAT A REQUEST IS IN ITS INPUT QUEUE AND STARTS THE READ
* REQUEST (CALLING CIO TO READ THE RECORD), GOES INTO WAIT MODE,
* AND INFORMS THE SWLP TO WATCH THE FET FOR EITHER A CHANGE IN THE
* *IN* POINTER OR THE COMPLETE BIT BEING SET.
*
* THE PROCESSOR AT THIS POINT DOES NOT CARE ABOUT ADDITIONAL
* REQUESTS IN ITS INPUT QUEUE SINCE IT HAS ONE IN PROGRESS. AGAIN,
* IT IS NOT EXECUTING AS THE SWLP IS CHECKING FOR CHANGES IN THE CIO
* FET. THE CHECKING DONE BY THE SWLP IS DONE USING LESS RESOURCES
* AND MORE EFFICIENTLY THAN IF THE PROCESSOR WAS CALLED AGAIN AND
* AGAIN TO CHECK THE STATUS OF THE FET. WHEN THE READ REQUEST HAS
* BEEN AT LEAST PARTIALLY PROCESSED (CIO HAS MOVED THE *IN* POINTER)
* THE PROCESSOR MOVES THE DATA FROM THE CIO BUFFER AND EITHER MAKES
* A NEW READ REQUEST, WAITS FOR THE ENTIRE REQUEST UNTIL CIO IS
* FINISHED, OR WAITS FOR A NEW REQUEST IN ITS INPUT Q, WHICHEVER IT
* DETERMINES IS THE APPROPRIATE ACTION TO TAKE.
*
* 2.1.3 WORK LIST ENTRY (WLE)
*
* WORK LIST ENTRIES PROVIDE A METHOD OF PROCESSING TRANSACTIONS THAT
* ALLOW THE DECOUPLING OF VARIOUS PROCESSES AND EXTERNAL SERVICES
* NEEDED TO COMPLETE A TRANSACTION. THE WHOLE PROCESS WORKS WITH
* JUST A FEW RULES:
*
* 1. WHEN THE FIRST ENTRY IN THE QUEUE IS MADE, A WLE REQUEST IS
* MADE TO CAUSE THE STARTING OF THE PROCESSOR OF THAT QUEUE.
* (ONLY ONE WLE REQUEST IS NEEDED FOR A QUEUE)
*
* 2. A PROCESSOR OF A QUEUE MUST EITHER EMPTY ALL OF ITS INPUT QUEUE
* OR MAKE ANOTHER WLE REQUEST TO RESTART ITSELF.
*
* 3. IF THERE ARE ANY TIMING RELATIONSHIPS BETWEEN INPUTS TO A
* PROCESSOR THAT MUST BE PRESERVED, THEN THE TIME COUPLED
* REQUESTS MUST BE QUEUED AND PROCESSED BY THE SAME PROCESSOR.
*
* 4. A PROCESSOR SHOULD ONLY RUN FOR A SHORT TIME. IF IT HAS TOO
* MANY REQUESTS IN ITS QUEUE, THEN IT SHOULD STOP AND MAKE A WLE
* REQUEST FOR ITSELF TO START UP AT A LATER TIME. THIS WILL
* ALLOW THE PROCESSORS OF ITS OUTPUT TO RUN AND ALSO ALLOW ANY
* SWLE REQUESTS TO BE COMPLETED IN A TIMELY MANNER.
*
* A PROCESSOR-S JOB IS TO TAKE ENTRIES FROM ITS INPUT QUEUE, PROCESS
* THEM, AND PLACE THE RESULTS IN OUTPUT QUEUES. PROCESSES THAT ARE
* NEAR THE OUTPUT SIDE HAVE THE HIGHEST PRIORITY. THIS IS TO FREE
* UP FIELD LENGTH BY PASSING DATA OUT OF THE PROGRAM. WHEN
* SELECTING THE NEXT WLE TO PROCESS THE HIGHEST PRIORITY REQUEST IS
* DONE REGARDLESS OF REQUEST ARRIVAL TIME. NO PROCESS, IN MAKING
* A QUEUE ENTRY FOR ADDITIONAL PROCESSING, CAN ASSUME OR REQUIRE
* THAT A PROCESS RUN NEXT, JUST THAT SOMETIMES IT WILL. THE WLE
* CONTAINS NO DATA, IT IS JUST A SIGNAL TO START THE PROCESS, DATA
* IS IN THE QUEUE FOR THE PROCESSOR.
*
* 2.2 TABLE MANAGER (QUEUE MANAGER)
*
* THE TABLE MANAGER, WRITTEN ORIGINALLY BY R. H. GOODELL FOR USE
* WITH *DDLCG*, IS A ROUGH EQUIVALENT TO THE STANDARD COMMON DECK
* *COMCMTP* WHICH CONTAINS THE COMPASS MANAGED TABLES PACKAGE.
* THERE IS NO QUEUE MANAGER AS SUCH IN THAT THE ONLY TASKS
* IMPLEMENTED IS THE PLACING OF ENTRIES IN QUEUES, REMOVING ENTRIES
* FROM QUEUES, AND REQUESTING PROCESSING OF A QUEUE VIA A WLE
* REQUEST, IF NEEDED. BOTH TABLES AND QUEUES ARE MAINTAINED
* BY THE TABLE MANAGER.
*
* BASICALLY, THE TABLE MANAGER MAINTAINS A SET OF BASED ARRAY
* POINTERS WHICH ALL POINTS TO THE MANAGED TABLE AREA IN HIGH CORE.
* EACH ONE POINTING TO THE WORD WHERE THE TABLE BEGINS. FOLLOWING
* EACH POINTER IS A WORD CONTAINING THE NUMBER OF WORDS ALLOCATED
* FOR THAT PARTICULAR TABLE. THUS, IN DEFINING THE TABLES, EACH
* TABLE IS DEFINED BY A BASED ARRAY FOLLOWED BY A ITEM DECLARATION.
*
* A CONCERTED EFFORT WAS MADE TO USE ONLY FIXED SIZED ENTRIES IN THE
* MANAGED TABLES DUE TO THE POTENTIAL MAINTENANCE PROBLEMS OF BASING
* ARRAYS NECESSARY TO HANDLE VARIABLE SIZED ENTRIES.
*
* THE TABLE MANAGER AUTOMATICALLY KEEPS THE BASED ARRAY POINTERS
* UPDATED AND IF THE ENTRY SIZE IS FIXED, THEN ALL ENTRIES CAN BE
* ACCESSED SAFELY BY JUST SUBSCRIPTING AND THE PROGRAMMER NEED NOT
* BE CONCERNED WITH KEEPING THE BASED ARRAY POINTED CORRECTLY.
*
* QUEUES ARE GENERALLY NOT FIXED ENTRY SIZE. NON-FIXED ENTRY SIZED
* MANAGED TABLES MUST BE HANDLED DIFFERENTLY AND MUCH CARE MUST BE
* TAKEN TO HAVE BASED ARRAYS POINTED CORRECTLY. WHERE POSSIBLE
* VARIABLE ENTRY SIZED MANAGED TABLES ARE HANDLED BY USE OF AN ENTRY
* SIZE WORD FOR EACH ENTRY. QUEUE ENTRIES ALL HAVE A WORD COUNT
* WORD, AN APPLICATION HEADER BLOCK WORD AND THE BODY OF THE ENTRY.
*
* THE ONLY EXTENSION TO THE MANAGER, FROM THE ORIGINAL VERSION, IS
* ADDING WORDS AND REMOVING WORDS IN THE MIDDLE OF A TABLE. THIS IS
* NEEDED TO ALLOW CERTAIN TABLES TO MAINTAIN ENTRIES IN SORT ORDER,
* SUCH AS TIMER REQUESTS.
*
* 2.3 OVERLAY LOADING
*
* OVERLAY LOADING IS DONE VIA CIO FROM A LOCAL FILE. THIS IS SO
* LOADING CAN BE DONE WITHOUT RECALL SINCE NOS WILL NOT ALLOW LOADER
* CALLS WITHOUT RECALL FROM PROGRAMS OTHER THAN SUBSYSTEMS. THE
* INABILITY TO LOAD AN OVERLAY WITHOUT RECALL WOULD DISRUPT AND STOP
* OTHER EXTERNAL REQUESTS THAT ARE BEING DONE WITHOUT RECALL. IN
* ADDITION, DATA/TABLES WHICH ARE ONLY USED BY AN OVERLAY IS ALREADY
* IN THE OVERLAY LOADED AS IT IS INSERTED AT INITIALIZATION TIME
* WHEN THE OVERLAY IS WRITTEN TO THE LOCAL FILE. EXAMPLES ARE
* INCALL AND OUTCALL BLOCKS IN NVF AND THE CROSS REFERENCE TABLES IN
* CS.
*
* WHEN AN OVERLAY HAS BEEN LOADED, THE OVERLAY IS USED UNTIL ALL
* WORK THAT CAN BE DONE BY IT IS COMPLETED AND A DIFFERENT OVERLAY
* IS NEEDED. THE EXECUTION OF OVERLAY CODE IS DONE IN SUCH A MANNER
* THAT IT DOES NOT LOCK OUT HIGHER PRIORITY ACTIVITIES.
*
* 2.4 TIMER SERVICES
*
* TIMER REQUESTS ARE DONE VIA A TIMER REQUEST BLOCK. THE BLOCK
* CONTAINS SUCH INFORMATION AS HOW MANY SECONDS TO WAIT (DELAY TIME)
* AND THE NUMBER OF THE QUEUE IN WHICH TO PLACE THE BLOCK ONCE THE
* TIME HAS EXPIRED (PAST THE FIRE-TIME).
*
* THE BLOCK IS ASSIGNED A CANCELLATION NUMBER WHEN THE REQUEST IS
* RECEIVED. THE NUMBER IS PASSED BACK TO THE REQUESTING PROC TO BE
* USED LATER TO IDENTIFY THE ENTRY IF THE BLOCK/REQUEST IS TO BE
* CANCELLED. THE BLOCK IS PLACED IN A TIMER REQUEST QUEUE. THE
* QUEUE IS SORTED IN ASCENDING ORDER BY FIRE-TIME. THE FIRE TIME
* IS CALCUALTED TO BE THE DELAY-TIME PLUS THE CURRENT TIME.
*
* AGAIN, ONCE THE FIRE TIME IS REACHED FOR A BLOCK, THE BLOCK IS
* REMOVE FROM THE TIMER REQUEST QUEUE AND PLACED IN THE QUEUE
* SPECIFIED IN THE BLOCK.
*
* THE UNUSED PORTIONS OF THE BLOCK CAN BE USED BY THE REQUESTING
* PROC TO STORE SUCH THINGS AS AN ACN VALUE OR A SERVICE MESSAGE
* I.D.
*
* 2.5 UTILITIES
*
* 2.5.1 BIT MANIPULATION
*
* THESE PROCEDURES TAKE CARE OF FUNCTIONS NEEDED AT THE BIT LEVEL.
* SOME FUNCTIONS INCLUDE SETTING AND CLEARING OF FLAGS IN A BIT MAP,
* STORE FIELDS THAT ARE LESS THAN SIXTY BITS OR CROSS WORD
* BOUNDRIES, AND INDICATE WHICH FLAG IS SET IN A BIT MAP.
*
* 2.5.2 CHARACTER CONVERSION
*
* THESE PROCEDURES CONVERT DISPLAY CODED CHARACTERS TO ASCII
* CHARACTERS AND VICE VERSA.
*
* 2.5.3 FILE FUNCTIONS
*
* THE ONLY PROCEDURE DEFINED PRESENTLY IS ONE TO DETERMINE HOW MANY
* USED AND UNUSED WORDS ARE CURRENTLY CONTAINED IN A SPECIFIED CIO
* BUFFER.
*
* 2.5.4 COMMAND PARSER/RECOGNIZER
*
* THE COMMAND RECOGNIZER IS USED BY NVF AND CS TO DO SYNTAX AND
* SEMANTIC CHECKING OF OPERATOR COMMANDS. THE RECOGNIZER IS PASSED
* A COMMAND SYNTAX TABLE, WHICH DEFINES THE LEGAL COMMANDS, AND THE
* OPERATOR TYPE-IN. WHAT IT RETURNS IS AN ERROR CODE VALUE AND A
* PARAMETER LIST. THE PARAMETER LIST IS THE COMMAND IN A STRUCTURED
* FORMAT.
*
* 2.5.5 AIP INTERFACE
*
* THE MEANS BY WHICH DATA IS PASSED BETWEEN NAM AND NVF/CS IS TAKEN
* CARE OF BY THE AIP MONITOR. THE AIP MONITOR IS A STATUS LIST
* DRIVEN PROCEDURE. FOR RECEIVING DATA THE NSUP WORD IS MONITORED
* AND IF IT CHANGES, THEN THE AIP MONITOR GETS THE DATA FROM NAM AND
* CALLS A PROC TO DISPATCH IT TO THE APPROPRIATE NVF/CS QUEUE. FOR
* SEND DATA NVF/CS MAINTAINS AN OUTGOING TRAFFIC QUEUE. ONCE THERE
* ARE ONE OR MORE ENTRIES IN THE QUEUE, THE AIP MONITOR REMOVES EACH
* ENTRY AND SENDS IT TO NAM.
*
* 3.0 DECK/ROUTINE NAMING CONVENTIONS
*
* SERVICES AND SCHEDULING ROUTINE NAMES ARE ALL PREFIXED BY *SS*.
* THE NAMES HAVE THE FOLLOWING FORMAT:
*
* SSYZZZ
*
* WHERE:
* Y = A, AIP INTERFACE ROUTINES
* B, BIT MANIPULATION ROUTINES
* C, CLOCK/TIMER ROUTINES
* D, CHARACTER CONVERSION ROUTINES
* F, FILE UTILITIES
* 0, OVERLAY MANAGEMENT ROUTINES
* R, COMMAND RECOGNITION ROUTINES
* S, SEQUENCING ROUTINES
* T, TABLE/QUEUE MANAGEMENT ROUTINES
*
* ZZZ = FIRST LETTER OF EACH WORD OF VERB-ADJECTIVE-NOUN DESCRIBING
* THE ROUTINE.
*
* ONE EXAMPLE IS *SSBSBF*. THIS IS A SERVICES AND SCHEDULING BIT
* MANIPULATION ROUTINE, WHERE *SBF* STANDS FOR STORE BIT FIELD.
* ANOTHER EXAMPLE IS *SSTRQE*. THIS IS A SERVICES AND SCHEDULING
* TABLE/QUEUE MANAGEMENT ROUTINE, WHERE *RQE* STANDS FOR REMOVE
* QUEUE ENTRY.
*
* THE FOLLOWING IS A LIST OF ALL THE SERVICES AND SCHEDULING
* ROUTINES GROUPED BY TYPE OF ROUTINE.
*
* AIP INTERFACE ROUTINES--
*
* SSACNI - CONTROL NETWORK INTERFACE
*
* BIT MANIPULATION ROUTINES--
*
* SSBCBW - CLEAR BIT IN WORD
* SSBFPB - FIND PRIORITY BIT
* SSBSBW - SET BIT IN WORD
* SSBTBW - TEST BIT IN WORD
* SSBEBF - EXTRACT BIT FIELD
* SSBSBF - STORE BIT FIELD
*
* CLOCK/TIME ROUTINES--
*
* SSCATR - ACCEPT TIMER REQUEST
* SSCCTR - CANCEL TIMER REQUEST
* SSCRTR - RETURN TIMER REQUEST
* SSCUTD - UPDATE TIME OF DAY
*
* CHARACTER CONVERSION ROUTINES--
*
* SSDCAD - CONVERT ASCII TO DISPLAY CODE
* SSDCDA - CONVERT DISPLAY CODE TO ASCII.
*
* FILE UTILITIES--
*
* SSFCBS - CHECK BUFFER SPACE
*
* OVERLAY MANAGEMENT ROUTINES--
*
* SSOJOP - JUMP TO OVERLAY PROGRAM
* SSOCOL - CONTROL OVERLAY LOADING
* SSOEOP - EXECUTE OVERLAY PROGRAM
*
* COMMAND RECOGNITION ROUTINES--
*
* SSRGNT - GET NEXT TOKEN
* SSRRCS - RECOGNIZE COMMAND STRING
*
* SEQUENCE ROUTINES--
*
* SSSCRR - CALL REQUESTED ROUTINE.
* SSSPAT - PROCESS ABNORMAL TERMINATION
* SSSAOR - ACCEPT OVERLAY REQUEST
* SSSAWR - ACCEPT WORKLIST REQUEST
* SSSESP - EXECUTE STATUS (WORKLIST) PROGRAM
* SSSEWP - EXECUTE WORKLIST PROGRAM
* SSSPES - PROGRAM EXECUTION SEQUENCER
* SSSPSI - PREPARE STATISTICS INFORMATION.
* SSSWNR - WAIT FOR NEW REQUEST
*
* TABLE/QUEUE MANAGEMENT ROUTINES--
*
* SSTRCM - REQUEST CENTRAL MEMORY
* SSTAQE - ACCEPT QUEUE ENTRY
* SSTRQE - REMOVE QUEUE ENTRY
* SSTTMR - TABLE MANAGEMENT ROUTINES.
* SSTASU - ACCUMULATE STORAGE USED
* SSTATS - ALLOCATE TABLE SPACE
* SSTDFL - DECREASE FIELD LENGTH
* SSTETS - ENLARGE TABLE SPACE
* SSTITM - INITIALIZE TABLE MANAGER
* SSTRTS - REMOVE TABLE SPACE
* SSTSDA - SET DYNAMIC AREA
*
*E
* 4.0 STRUCTURE CHARTS
*
* THE FOLLOWING ARE STRUCTURE CHARTS FOR SERVICES AND SCHEDULING.
* NOT ALL THE ROUTINES ARE SHOWN, ONLY THOSE THAT CALL OTHER
* ROUTINES.
*
*
* 4.1 AIP INTERFACE ROUTINE
*
*
* +-------------+
* I I
* +----------->I CSNVDSP I
* I I I
* I +-------------+
* I
* I +-------------+
* I I I
* +----------->I NETGETL I
* I I I
* I +-------------+
* I
* +-----------+ I +-------------+
* I I I I I
* I SSACNI +--------+----------->I NETPUT I
* I I I I I
* +-----------+ I +-------------+
* I
* I +-------------+
* I I I
* +----------->I NETREL I
* I I I
* I +-------------+
* I
* I +-------------+
* I I I
* +----------->I SSTRQE I
* I I
* +-------------+
*
*
*
* SSACNI -- CONTROL NETWORK INTERFACE
* CSNVDSP -- CS/NVF DISPATCH NETWORK TRAFFIC
* NETGETL -- RECEIVE NETWORK TRAFFIC
* NETPUT -- SEND NETWORK TRAFFIC
* NETREL -- RELEASE DEBUG TRACE FILE
* SSTRQE -- REMOVE QUEUE ENTRY
*E
* 4.2 CLOCK/TIMER ROUTINES
*
* +-------------+
* I I
* I SSCATR I
* I I
* +------+------+
* I
* +----------------+-----------------+
* I I
* +------+-----+ +------+------+
* I I I I
* I SSCUTD I I SSTETS I
* I I I I
* +------------+ +-------------+
*
*
*
*
* +-------------+ +-------------+
* I I I I
* I SSCCTR +--------->I SSTRTS I
* I I I I
* +-------------+ +-------------+
*
*
*
*
*
* +-------------+
* I I
* I SSCRTR I
* I I
* +-------------+
* I
* +----------------+----------------+
* I I
* +------+------+ +------+------+
* I I I I
* I SSTAQE I I SSTRQE I
* I I I I
* +-------------+ +-------------+
*
*
* SSCATR -- ACCEPT TIMER REQUEST
* SSCUTD -- UPDATE TIME OF DAY
* SSTETS -- ENLARGE TABLE SPACE
* SSCCTR -- CANCEL TIMER REQUEST
* SSCTRS -- REMOVE TABLE SPACE
* SSCRTR -- RETURN TIMER REQUEST
* SSTAQE -- ACCEPT QUEUE ENTRY
* SSTRQE -- REMOVE QUEUE ENTRY
*E
*
*
* 4.2 CLOCK/TIMER ROUTINES (CONT.)
*
*
*
*
*
* +-------------+
* I I
* +-------------->I PDATE I
* I I I
* I +-------------+
* I
* I +-------------+
* I I I
* +-------------->I DATE I
* I I I
* I +-------------+
* I
* +-------------+ I +-------------+
* I I I I I
* I SSCUTD +-------+-------------->I CLOCK I
* I I I I I
* +-------------+ I +-------------+
* I
* I +-------------+
* I I I
* +-------------->I RTIME I
* I I I
* I +-------------+
* I
* I +-------------+
* I I I
* +-------------->I SSSAWR I
* I I
* +-------------+
*
*
* SSCUTD -- UPDATE TIME OF DAY
* PDATE -- GET PACKED DATE AND TIME
* DATE -- GET DATE
* CLOCK -- GET TIME (DISPLAY CODE)
* RTIME -- GET AMOUNT OF TIME SINCE DEADSTART
* SSSAWR -- ACCEPT WORKLIST REQUEST
*E
* 4.3 OVERLAY MANAGEMENT ROUTINES
*
*
*
* +-------------+
* I I
* I SSOCOL I
* I I
* +------+------+
* I
* +--------------------+-----------------------+
* I I I
* +------+------+ +------+------+ +------+------
* I I I I I I
* I READ I I SSSAWR I I SSSTSDA I
* I I I I I I
* +-------------+ +-------------+ +-------------+
*
*
* +-------------+
* I I
* +--------->I SSBCBW I
* I I I
* I +-------------+
* I
* I +-------------+
* I I I
* +--------->I SSBFPB I
* +-------------+ I I I
* I I I +-------------+
* I SSOEOP +----------+
* I I I +-------------+
* +-------------+ I I I
* +--------->I SSOJOP I
* I I I
* I +-------------+
* I
* I +-------------+
* I I I
* +--------->I SSSAWR I
* I I
* +-------------+
*
*
* SSOCOL -- CONTROL OVERLAY LOADING
* READ -- INITIATE CIO READ ON FILE
* SSSAWR -- ACCEPT WORKLIST REQUEST
* SSTSDA -- SET DYNAMIC TABLE AREA
* SSOEOP -- EXECUTE OVERLAY PROGRAM
* SSBCBW -- CLEAR BIT IN WORD
* SSBFPB -- FIND PRIORITY BIT
* SSOJOP -- JUMP TO OVERLAY PROGRAM
*E
*
*
* 4.4 COMMAND RECOGNITION ROUTINES
*
*
*
*
* +-------------+
* I I
* I SSRGNT I
* I I
* +------+------+
* I
* +---------------+---------------+
* I I
* +------+------+ +------+------+
* I I I I
* I SSBEBF I I SSBSBF I
* I I I I
* +-------------+ +-------------+
*
*
*
* +-------------+
* I I
* I SSRRCS I
* I I
* +------+------+
* I
* +-----------------+------------------+
* I I I
* +------+------+ +------+------+ +------+-------+
* I I I I I I
* I SSRGNT I I SSBEBF I I SSBSBF I
* I I I I I I
* +-------------+ +-------------+ +--------------+
*
*
* SSRGNT -- GET NEXT TOKEN
* SSBEBF -- EXTRACT BIT FIELD
* SSBSBF -- STORE BIT FIELD
* SSRRCS -- RECOGNIZE COMMAND STRING
*E
*
*
* 4.5 SEQUENCE ROUTINES
*
*
*
*
* +-------------+ +-------------+
* I I I I
* I SSSAOR +------------>I SSBSBW I
* I I I I
* +-------------+ +-------------+
*
*
*
*
*
* +-------------+
* I I
* I SSSAWR I
* I I
* +------+------+
* I
* +--------------+---------------+
* I I
* +------+-------+ +------+------+
* I I I I
* I SSSAOR I I SSBSBW I
* I I I I
* +--------------+ +-------------+
*
*
*
*
*
*
* +-------------+ +-------------+
* I I I I
* I SSSESP +--------------->I SSSCRR I
* I I I I
* +-------------+ +-------------+
*
*
* SSSAOR -- ACCEPT OVERLAY REQUEST
* SSSCRR -- CALL REQUESTED ROUTINE
* SSSAWR -- ACCEPT WORKLIST REQUEST
* SSBSBW -- SET BIT IN WORD
* SSSESP -- EXECUTE STATUS WORKLIST PROGRAM
*E
*
*
* 4.5 SEQUENCE ROUTINES (CONT.)
*
*
*
*
* +-------------+
* I I
* I SSSEWP I
* I I
* +------+------+
* I
* +-----------------+------------------+
* I I I
* +------+------+ +------+------+ +------+------+
* I I I I I I
* I SSSCRR I I SSBCBW I I SSBFBP I
* I I I I I I
* +-------------+ +-------------+ +-------------+
*
*
*
* +-------------+
* I I
* I SSSPSI I
* I I
* +------+------+
* I
* +---------------+-----------------+
* I I
* +------+------+ +------+------+
* I I I I
* I NETLGS I I XCDD I
* I I I I
* +-------------+ +-------------+
*
*
* SSSEWP -- EXECUTE WORKLIST PROGRAM
* SSSCRR -- CALL REQUESTED ROUTINE
* SSBCBW -- CLEAR BIT IN WORD
* SSBFPB -- FIND PRIORITY BIT
* SSSPSI -- PREPARE STATISTICS INFORMATION
* NETLGS -- LOG NETWORK STATISTICS
* XCDD -- CONVERT INTEGER TO DISPLAY CODE DECIMAL
*E
*
*
* 4.5 SEQUENCE ROUTINES (CONT.)
*
*
*
*
*
* +-------------+
* I I
* +------------>I MESSAGE I
* I I I
* I +-------------+
* I
* I +-------------+
* I I I
* +------------>I REPRIEVE I
* I I I
* I +-------------+
* I
* +-------------+ I +-------------+
* I I I I I
* I SSSPAT +------+------------>I DMB I
* I I I I I
* +-------------+ I +-------------+
* I
* I +-------------+
* I I I
* +------------>I NETSTC I
* I I I
* I +-------------+
* I
* I +-------------+
* I I I
* +------------>I WRITER I
* I I
* +-------------+
*
*
* SSSPAT -- PROCESS ABNORMAL TERMINATION
* MESSAGE -- SEND MESSAGE TO DAYFILE
* REPRIEVE -- REPRIEVE PROCESSOR
* DMB -- GENERATE BINARY DUMP
* NETSTC -- FLUSH NAM STATISTICS
* WRITER -- FLUSH CIO BUFFER AND EOR ON FILE
*E
*
*
*
* 4.5 SEQUENCE ROUTINES (CONT.)
*
*
*
*
*
* +-------------+
* I I
* +------------>I NETCHEK I
* I I I
* I +-------------+
* I
* I +-------------+
* I I I
* +------------>I SSCUTD I
* I I I
* I +-------------+
* I
* +-------------+ I +-------------+
* I I I I I
* I SSSPES +----+------------>I SSSESP I
* I I I I I
* +-------------+ I +-------------+
* I
* I +-------------+
* I I I
* +------------>I SSSEWP I
* I I I
* I +-------------+
* I
* I +-------------+
* I I I
* +------------>I SSSWNR I
* I I
* +-------------+
*
*
* SSSPES -- PROGRAM EXECUTION SEQUENCE
* NETCHEK - UPDATE NSUP WORD
* SSCUTD -- UPDATE TIME OF DAY
* SSSESP -- EXECUTE STATUS WORKLIST PROGRAM
* SSSEWP -- EXECUTE WORKLIST PROGRAM
* SSSWNR -- WAIT FOR NEW REQUEST
*E
*
*
* 4.5 SEQUENCE ROUTINES (CONT.)
*
*
*
*
*
*
* +-------------+
* I I
* I SSSWNR I
* I I
* +------+------+
* I
* +----------------+----------------+
* I I I
* +------+------+ +------+------+ +------+------+
* I I I I I I
* I NETWAIT I I RECALL I I SSTDFL I
* I I I I I I
* +-------------+ +-------------+ +-------------+
*
*
* SSSWNR -- WAIT FOR NEW REQUEST
* NETWAIT -- REQUEST NAM TO ROLLOUT PROGRAM
* RECALL -- RETURN CONTROL AFTER COMPLETE BIT IS SET
* SSTDFL -- DECREASE FIELD LENGTH
*E
*
*
* 4.6 TABLE/QUEUE MANAGEMENT ROUTINES
*
*
*
*
*
* +-------------+
* I I
* I SSTAQE I
* I I
* +------+------+
* I
* +----------------+----------------+
* I I I
* +------+------+ +------+------+ +------+------+
* I I I I I I
* I MOVEI I I SSTATS I I SSSAWR I
* I I I I I I
* +-------------+ +-------------+ +-------------+
*
*
*
* +-------------+
* I I
* I SSTRQE I
* I I
* +------+------+
* I
* +------------+------------+
* I I
* +------+------+ +------+------+
* I I I I
* I MOVEI I I SSTRTS I
* I I I I
* +-------------+ +-------------+
*
*
* SSTAQE -- ACCEPT QUEUE ENTRY
* MOVEI -- MOVE WORDS (INDIRECT ADDRESSING)
* SSTATS -- ALLOCATE TABLE SPACE
* SSSAWR -- ACCEPT WORKLIST REQUEST
* SSTRQE -- REMOVE QUEUE ENTRY
* SSTRTS -- REMOVE TABLE SPACE
*E
*
*
* 4.6 TABLE/QUEUE MANAGEMENT ROUTINES (CONT.)
*
*
*
* +-------------+
* I I
* I SSTRTS I
* I I
* +------+------+
* I
* +------------+------------+
* I I
* +------+------+ +------+------+
* I I I I
* I MOVEI I I SSTASU I
* I I I I
* +-------------+ +-------------+
*
*
*
* +-------------+
* I I
* I SSTSDA I
* I I
* +------+------+
* I
* +-----------+------------+
* I I
* +------+------+ +------+------+
* I I I I
* I SSTASU I I RFL I
* I I I I
* +-------------+ +-------------+
*
*
* SSTRTS -- REMOVE TABLE SPACE
* MOVEI -- MOVE WORDS (INDIRECT ADDRESSING)
* SSTASU -- ACCUMULATE STORAGE USED
* SSTSDA -- SET DYNAMIC TABLE AREA
* RFL -- REQUEST FIELD LENGTH
*
*E
* 5.0 TABLE STRUCTURES
*
* 5.1 POINTER TABLE--
*
* THIS TABLE CONTAINS POINTERS TO IMPORTANT PARTS OF THE PROGRAM.
*
*T 42/NAME,18/ADDR
*
* NAME - DISPLAY CODE POINTER NAME.
* ADDR - POINTER VALUE.
*
*
* 5.2 WORKLIST REQUEST QUEUE
*
* THIS IS A ONE WORD ITEM THAT HAS A BIT SET FOR EACH TYPE ZERO
* WORKLIST REQUEST TO BE EXECUTED.
*
*T 12/RES,48/BIT$MAP
*
* RES - UNUSED FIELD.
* BIT$MAP - THE FIRST BIT ON THE LEFT CORRESPONDS TO THE FIRST
* WORKLIST DEFINITION AND HAS THE HIGHEST PRIORITY, THE
* SECOND BIT CORRESPONDS TO THE SECOND WORKLIST, AND SO
* ON.
*E
* 5.3 WORKLIST DEFINITION TABLE
*
* THIS TABLE CONTAINS THE WORKLIST DEFINITIONS FOR THE PROGRAM.
*
* THERE ARE THREE FORMATS FOR AN ENTRY IN THIS TABLE. THEY ARE AS
* FOLLOWS:
*
* WORKLIST TYPE ZERO -- RESIDENT ROUTINE
*
*T 12/TYPE0,30/RES,18/RADD
*
* TYPE0 - WORKLIST TYPE (SET TO ZERO)
* RES - UNUSED FIELD
* RADD - ROUTINE ENTRY POINT ADDRESS
*
*
* WORKLIST TYPE ONE -- STATUS WORKLIST DRIVEN.
*
*T 12/TYPE1,30/RES,18/CADDR
*
* TYPE1 - WORKLIST TYPE (SET TO ONE)
* RES - UNUSED FIELD
* CADDR - INTERUPT CELL ADDRESS
*
*
* WORKLIST TYPE TWO -- OVERLAY RESIDENT ROUTINE.
*
*T 12/TYPE2,12/OVNUM,12/OVEPT,24/RES
*
* TYPE2 - WORKLIST TYPE (SET TO TWO)
* OVNUM - OVERLAY NUMBER
* OVEPT - OVERLAY ENTRY POINT NUMBER
* RES - UNUSED FIELD
*E
* 5.4 QUEUE TO WORKLIST DEFINITION TABLE
*
* EACH ENTRY IN THIS TABLE CORRESPONDS TO A TABLE/QUEUE MANAGED
* BY THE TABLE MANAGER. EACH ENTRY CONTAINS A POINTER TO THE
* WORKLIST DEFINITION ENTRY THAT MUST BE INVOKED WHEN AN ENTRY IS
* MADE IN THE QUEUE.
*
*T TBL1 60/WLD$NUM
*T TBL2 60/WLD$NUM
*
* WLD$NUM - WORKLIST DEFINITION NUMBER
*
*E
* 5.5 STATUS WORKLIST DEFINITION
* STATUS WORKLIST DEFINITIONS
*
* THIS TABLE CONTAINS THE CURRENT CONDITIONS TO BE WATCHED FOR,
* THE MONITORS AND THE ADDRESSES TO BE EXECUTED WHEN THE
* CONDITIONS CHANGE.
*
*T WORD1 6/RES,18/ADDR1,18/ADDR2,18/RADDR
*T WORD2 60/INIT1
*T WORD3 60/INIT2
*
* RES - UNUSED FIELD
* ADDR1 - ADDRESS OF FIRST CELL TO BE WATCHED
* ADDR2 - ADDRESS OF SECOND CELL TO BE WATCHED
* RADDR - ENTRY POINT ADDRESS OF ROUTINE TO CALL
* INIT1 - INITIAL VALUE OF FIRST CELL
* INIT2 - INITIAL VALUE OF SECOND CELL
*
*
* 5.6 OVERLAY DEFINITION TABLE
*
* THIS TABLE IS THE INDEX FOR THE OVERLAY FILE. IT CONTAINS THE
* OVERLAY NAMES, ENTRY POINTS, AND DISK ADDRESSES FOR THE
* OVERLAYS.
*
*T WORD1 42/OVNAME,18/FWA
*T WORD2 12/LEVEL,12/RES,18/PADDR,18/LWA
*
* OVNAME - OVERLAY NAME
* FWA - FIRST WORD ADDRESS OF OVERLAY
* LEVEL - OVERLAY LEVEL
* RES - UNUSED FIELD
* PADDR - RELATIVE PRU ADDRESS ON OVERLAY FILE
* LWA - LAST WORD ADDRESS OF OVERLAY
*E
* 5.7 OVERLAY CONTROL ITEMS
*
* THE FOLLOWING ITEMS ARE USED FOR LOADING AND EXECUTING OVERLAYS.
*
* OVNUM = PRIMARY LEVEL NUMBER OF OVERLAY CURRENTLY EXECUTING
* OVENUM = OVERLAY ENTRY POINT NUMBER TO EXECUTE
* OVC = NUMBER OF OVERLAY REQUESTS MADE
*
*
* 5.8 OVERLAY REQUEST TABLE
*
* THIS IS A BIT MAP WHERE EACH BIT CORRESPONDS TO AN OVERLAY THAT
* NEEDS TO BE LOADED.
*
*T 12/RES,42/BIT$MAP
*
* RES - UNUSED FIELD
* BIT$MAP - BEGINNING WITH THE LEFT MOST BIT: BIT ONE CORRESPONDS
* TO OVERLAY ONE, BIT TWO TO OVERLAY TWO, AND SO ON.
*
*
* 5.9 ROLLOUT TABLE
*
* THIS TABLE USED TO CHECK IF THERE ARE ANY OUTSTANDING EXTERNAL
* REQUESTS BEING MADE. EACH ENTRY POINTS TO A WORD AND THE BIT
* POSITION OF THE COMPLETE BIT.
*
*T WORD1 48/RES,12/ECOUNT
*T WORD2+ 30/BPOS,30/WADDR
*
* RES - UNUSED FIELD
* ECOUNT - ENTRY COUNT
* BPOS - BIT POSITION OF COMPLETE BIT
* WADDR - POINTER TO WORD CONTAINING COMPLETE BIT
*
*E
* 5.10 TIMER REQUEST BLOCK
*
* THIS IS THE FORMAT OF THE BLOCK USED WHEN MAKING A TIMER REQUEST.
*
*T WORD1 48/RES,12/ECOUNT
*T WORD2 18/RES,18/CNUM,24/RES
*T WORD3 60/RES
*T WORD4 24/FTIME,18/DELAY,18/QNUM
*
* RES - RESEVRED FOR USE BY PROGRAM (NVF/CS)
* ECOUNT - ENTRY WORD COUNT (SET TO FOUR)
* CNUM - CANCEL NUMBER
* FTIME - FIRE TIME (TIME IN WHICH TO PUT THIS BLOCK INTO A Q)
* DELAY - DELAY TIME (NUMBER OF SECONDS TO ADD TO CURRENT TIME
* TO DETERMINE THE FIRE TIME)
* QNUM - NUMBER OF THE QUEUE TO PLACE THIS BLOCK IN AFTER IT
* HAS REACHED ITS FIRE TIME
*
*
* 5.11 CURRENT TIME AND DAY
*
* THIS BLOCK CONTAINS THE CURRENT TIME AND DATE TO BE USED BY
* SERVICES AND SCHEDULING, AND BY THE PROGRAM (NVF/CS)
*
*T WORD1 30/RES,30/PDATE
*T WORD2 60/DDATE
*T WORD3 60/DTIME
*T WORD4 24/RTSEC,36/RTMIL
*T WORD5 24/FTIME,36/RES
*
* RES - UNUSED FIELD
* PDATE - PACKED DATE AND TIME
* DDATE - DISPLAY CODED DATE
* DTIME - DISPLAY CODED TIME
* RTSEC - NUMBER OF SECONDS SINCE DEADSTART
* RTMIL - MILLISECONDS
* FTIME - NEXT FIRE TIME (WITH RELATIION TO RTSEC)
*E
*
* 5.12 TYPICAL QUEUE ENTRY
*
* THE FOLLOWING IS THE FORMAT FOR A TYPICAL QUEUE ENTRY IN NVF
* OR CS.
*
*T WORD1,48/RES,12/ECOUNT
*T WORD2,60/ABHWORD
*T WORD3,60/ENTRY
*T WORD4,60/
* .
* .
* .
*T,ECOUNT,60/
*
* RES - USED BY PROGRAM
* ECOUNT - ENTRY WORD COUNT
* ABHWORD - APPLICTAION BLOCK HEADER WORD
* ENTRY - BODY OF QUEUE ENTRY
*E
* 6.0 DEBUGGING TIPS
*
* THE FOLLOWING LIST ARE THINGS TO LOOK AT OR LOOK FOR WHEN READING
* OR ANALYZING AN NVF/CS DUMP. THIS LIST IS NOT IN ANY SPECIFIC
* ORDER. THE ITEMS THAT APPLY DEPEND ON WHAT THE PROBLEM IS.
*
* 1. FOR QUICK REFERENCE TO KEY PLACES IN A DUMP USE THE POINTER
* TABLE WHICH SHOULD BE THE FIRST THING LOADED AFTER THE
* LOADER TABLE. IT WILL POINT TO SUCH THINGS AS THE NSUP WORD
* AND THE BEGINNING OF THE MANAGED TABLES POINTERS.
*
* 2. CHECK THE REPRIEVE BLOCK FOR ANY APPLICABLE INFORMATION. FOR
* THE FORMAT OF THE BLOCK SEE THE NOS VOLUME 4 REFERENCE
* MANUEL.
*
* 3. THE FIRST WORD RIGHT AFTER THE REPRIEVE BLOCK CONTAINS THE
* CONTENTS OF *SYS=* JUST AFTER THE ABORT.
*
* 4. CHECK OVNUM, OVENUM, ORQ, AND ORC FOR THE STATE OF OVERLAY
* LOADING. THESE ITEMS WILL TELL YOU SUCH THINGS AS WHAT
* OVERLAY IS LOADED, WHICH ENTRY POINT IS BEING EXECUTED, AND
* WHAT OVERLAYS STILL NEED TO BE LOADED
*
* 5. CHECK THE CONTENTS OF WCB, ABH, AND MSG BUFFERS.
*
* 6. CHECK FOR MANAGED TABLES CONTAINING DATA. THESE ARE ALL THE
* TABLES WHOSE LENGTH VALUES ARE NON-ZERO.
*
* 7. CHECK THE CONTENTS OF MEMLOC. THIS WILL TELL YOU WHERE THE
* MANAGED TABLE AREA BEGINS.
*
* 8. TO VERIFY THAT THE LOAD MAP MATCHES THE DUMP, THE BUILD DATE
* AND TIME INDICATED IN THE COMMENT PORTION OF PROC *SSSPAT*
* (IN THE LOAD MAP) SHOULD MATCH THE DATE AND TIME FOUND
* RIGHT AFTER THE POINTER TABLE.
*
*E
#
*ENDTEXT
*ENDIF
# TITLE SSSPES - PROGRAM EXECUTION SEQUENCER. #
BEGIN # SSSPES #
#
** SSSPES - PROGRAM EXECUTION SEQUENCER.
*
* S. H. FISCHER. 81/08/27.
*
* THIS IS THE MAIN LOOP.
*
* PROC SSSPES
*
* ENTRY NONE.
*
* EXIT NEVER.
*
* METHOD TRY AND FIND WORK TO TO, IF NONE CALL IDLE ROUTINE
* AND REPEAT.
*
#
#
**** PROC SSSPES - XREF LIST.
#
XREF
BEGIN
PROC NETCHEK; # CHECK WORKLIST PROCESSING COMPLETION #
PROC SSCUTD; # UPDATE TIME OF DAY #
PROC SSSESP; # EXECUTE STATUS PROGRAM #
PROC SSSEWP; # EXECUTE WORKLIST PROGRAM #
PROC SSSWNR; # WAIT NEW REQUEST #
END
#
****
#
ITEM ACTIVE B;
TOP: # TOP OF MAIN LOOP #
NETCHEK; # CHECK WORKLIST PROCESSING COMPLETION #
SSCUTD; # UPDATE TIME OF DAY #
SSSESP( ACTIVE ); # EXECUTE STATUS PROGRAM #
IF ACTIVE THEN GOTO TOP;
SSSEWP( ACTIVE ); # EXECUTE WORKLIST PROGRAM #
IF ACTIVE THEN GOTO TOP;
SSSWNR; # WAIT NEW REQUEST #
GOTO TOP;
END # SSSPES #
TERM