cdc:nos2.source:nam5871:netchek
Table of Contents
NETCHEK
Table Of Contents
- [00006] PROC NETCHEK
- [00268] PROC NP$RESP
- [00269] PROC NP$SEND
- [00271] PROC NP$SN
- [00273] PROC NP$USI
Source Code
- NETCHEK.txt
- *DECK NETCHEK
- USETEXT AIPDEF
- USETEXT NP$MODE
- USETEXT NP$NWL
- USETEXT NP$STAT
- PROC NETCHEK;
- *IF DEF,IMS
- #
- * NETWORK PRODUCTS DOCUMENTATION PAGE
- * NAM INTERNAL SPECIFICATION DATE.
- * 7.0 AIP PROGRAM STRUCTURE
- *
- * AS MENTIONED BEFORE AIP IS A COLLECTION OF RELOCATABLE PROCEDURES
- * RESIDING IN THE APPLICATIONS FIELD LENGTH. THE NAM CALLS
- * (I.E. NETON, NETGET, NETPUT) DESCRIBED IN THE NAM REFERENCE
- * MANUAL ARE REALLY AIP PROCEDURE CALLS. THE FUNCTIONS OF AIP
- * ARE AS FOLLOWS
- *
- * . BUFFER APPLICATION REQUEST IN THE NWL (NETWORK WORKLIST),
- * WITHIN THE APPLICATIONS FIELD LENGTH FOR SUBSEQUENT TRANSFER
- * TO NIP.
- *
- * . BUFFER INCOMING SUPERVISORY MESSAGES IN SMB (SUPERVISORY MSG
- * BUFFER) FROM NIP FOR SUBSEQUENT DELIVERY TO THE APPLICATION
- *
- * . UPDATE THE VARIOUS STATUS FLAGS IN THE NSUP WORD FOR THE
- * APPLICATION
- *
- * . DELIVER ANY NON-SUPERVISORY MESSAGE HEADERS FROM THE NWL
- * TO THE APPLICATIONS HA. THESE GET PUT IN THE NWL BY NIP"S
- * REPLY TO GET TYPE REQUEST IN THE NWL. (NIP WRITES ITS AWL
- * BACK TO AIP"S NWL AREA)
- *
- * . ASSURE ORDERLY NAM CALLS (I.E. NO NETPUT BEFORE NETON ETC.)
- *
- * THE AIP PROCEDURES DIRECTLY CALLABLE BY THE APPLICATION ARE
- *
- * . NETFUNC - MODIFY AIP PROCESSING
- *
- * . NETON - CONNECT AN APPLICATION TO THE NETWORK
- *
- * . NETOFF - TERMINATE CONNECTION TO THE NETWORK
- *
- * . NETGET - READ A MESSAGE FROM THE SPECIFIED CONNECTION
- *
- * . NETGETL - READ A MESSAGE FROM ANY CONNECTION ON THE
- * SPECIFIED LIST
- *
- * . NETGETQ - READ A MESSAGE FROM AIP-S UPLINE DATA QUEUE
- * FOR A SPECIFIED CONNECTION
- *
- * . NETPUT - SEND A MESSAGE ON THE SPECIFIED CONNECTION
- *
- * . NETWAIT - WAIT UNTIL INPUT IS AVAILABLE OR FOR A SPECIFIED
- * TIME
- *
- * . NETSETP - TURN PARALLEL PROCESSING ON OR OFF
- *
- * . NETCHEK - CHECK PREVIOUS REQUEST FOR COMPLETION AND UPDATE
- * THE S AND I BITS IN THE NSUP WORD TO REFLECT CURRENT STATUS OF
- * DATA AVAILABILITY.
- *
- * . NETGETF - READ A MESSAGE FROM THE SPECIFIED CONNECTION
- * INTO FRAGMENTED DATA POTS
- *
- *
- * . NETGTFL - READ A MESSAGE FROM ANY CONNECTION ON THE SPECIFIED
- * LIST INTO FRAGMENTED DATA POTS
- *
- * . NETGTLQ - READ A MESSAGE FROM AIP-S UPLINE DATA QUEUE FOR A
- * SPECIFIED LIST NUMBER
- *
- * . NETPUTF - WRITE A MESSAGE ON A CONNECTION GATHERING THE
- * MESSAGE TEXT FROM FRAGMENTED DATA POTS.
- *
- * . NETPUTS - SEND A MESSAGE ON A CONNECTION IF THE UPLINE DATA
- * QUEUE FEATURE IS BEING USED.
- *
- * INTERNAL PROCEDURES AUGMENTING THE ABOVE USER CALLABLE PROCEDURES
- * ARE AS FOLLOWS: (NOTE INTERNAL ENTRY POINTS MUST BEGIN WITH NP$)
- *
- * . NP$DBG - RECORD AIP DEBUG INFORMATION ON FILE ZZZZZDN
- *
- * . NP$ERR - DAYFILE APPLICATION ERROR MESSAGES
- *
- * . NP$GETQ - DELIVER A DATA MESSAGE FROM THE AIP UPLINE DATA
- * QUEUE
- *
- * . NP$GSM - DELIVER A SUPERVISORY MESSAGE TO THE CALLER
- *
- * . NP$RESP - PROCESS WORKLIST RESPONSE FROM NIP
- *
- * . NP$SEND - SET UP A WORKLIST FOR TRANSFER TO NIP
- *
- * . NP$XFER - DO THE ACTUAL WORKLIST TRANSFER
- *
- * . NP$OSIF - IS A COMPASS ROUTINE TO HANDLE OPERATING SYSTEM
- * INTERFACES
- *
- * . NP$RCL - COMPASS ROUTINE TO GO INTO RECALL ON BIT 0 OF A WORD
- * SPECIFIED AS AN INPUT PARAMETER.
- *
- * . NP$UCV - UPDATE NWL CONTROL VARIABLES
- *
- * . NP$USI - UPDATE S AND I BITS IN THE NSUP WORD
- *
- * THE MAJOR TABLES USED BY AIP ARE THE NWL (NP$NWL) AND THE
- * SMB (NP$SMB) AS MENTIONED BEFORE.
- * BOTH OF THESE WILL BE DISCUSSED IN GREATER DETAIL IN THE TABLES
- * SECTION. HERE IS ONLY A DESCRIPTION OF HOW THEY ARE USED.
- *
- * . NP$NWL IS THE NETWORK WORK LIST AIP BUFFERS USER REQUESTS
- * IN. ONLY BACK-TO-BACK PUT TYPE REQUEST ARE BUFFERED. AIP
- * ASSURES THAT AFTER PROCESSING THE CURRENT REQUEST THERE
- * ARE AT LEAST 4 OR 6 WORDS LEFT IN THE BUFFER. IF THERE ARE
- * LESS THAN FOUR WORDS OR IF THE REQUEST IS A NETON, NETOFF,
- * FORCED NETWAIT, A GET TYPE REQUEST OR A NETPUT OF BT=4, THEN
- * THE NWL IS TRANSFERRED TO NIP"S WORKLIST RECEIVING BUFFER.
- * EMPTYING THE NWL ON A NETPUT OF BT=4 ALLOWS THE SUPERVISORS TO
- * ACCURATELY SET A TIMER SO THAT IF THE NPU DOES NOT RESPOND
- * TO A SERVICE MESSAGE AFTER THE TIMEOUT PERIOD, THE SUPERVISORS
- * CAN RESEND THE SERVICE MESSAGE.
- * AIP ASSURES THAT THERE
- * ARE 4 OR 6 WORDS LEFT IN THE NWL SO THAT WE CAN BE SURE
- * THAT WE CAN FIT THE NEXT REQUEST INTO THE WORKLIST. TWO
- * WORDS ARE NEEDED FOR THE NEXT REQUEST, TWO WORDS MAY BE NEEDED
- * TO REQUEST DATA FROM NIP IF THE UPLINE DATA FEATURE IS BEING
- * USED, AND TWO WORDS ARE
- * NEEDED TO REQUEST SUPERVISORY MESSAGES FROM NIP. IN GENERAL
- * THERE IS A TWO WORD HEADER IN THE WORK LIST. THE MESSAGE
- * TEXT IS ALSO COPIED TO THE WORK LIST, IF IT FITS. IF NOT
- * THE WORK LIST IS TRANSFERRED TO NIP. NIP WILL PROCESS
- * THE WORK LIST AND FORMAT A REPLY TO ALL BUT THE PUT TYPE
- * REQUESTS. THE REPLY IS WRITTEN BACK TO NP$NWL.
- *
- * THE DOWNLINE BUFFER FEATURE ALLOWS AN APPLICATION TO SPECIFY
- * A LARGER BUFFER THAN THAT SUPPLIED BY AIP. IN THIS CASE,
- * THE APPLICATION BUFFER WILL FUNCTION EXACTLY AS THE NP$NWL
- * WORKLIST. WHEN IT COMES TIME TO TRANSFER THE WORKLIST TO
- * NIP, A 2-WORD PUTQ ENTRY WILL BE CREATED IN THE AIP WORKLIST
- * CONTAINING THE ADDRESS OF THE APPL-SUPPLIED BUFFER. THIS
- * WILL IMPROVE PERFORMANCE.
- *
- * . NP$SMB IS THE SUPERVISORY MESSAGE BUFFER. THE SUPERVISORY
- * MESSAGE BUFFER WAS DESIGNED TO MINIMIZE CPU OVERHEAD
- * IN TRANSFERRING NUMEROUS SHORT MESSAGES (SUCH AS FC/BACK-S)
- * BETWEEN NIP AND THE APPLICATION. FROM AIP-S POINT OF VIEW
- * THE SMB IS A CIRCULAR BUFFER. LOCATION FIRST POINTS TO
- * THE FIRST WORD OF THE BUFFER. HEAD POINTS TO THE FIRST
- * WORD OF THE NEXT SUPERVISORY MESSAGE TO BE DELIVERED BY
- * AIP, FOOT POINTS TO THE NEXT AVAILABLE WORD IN THE SMB
- * INTO WHICH NIP COULD WRITE SUPERVISORY MESSAGES, AND LAST
- * POINTS TO THE LAST WORD OF THE SUPERVISORY MESSAGE BUFFER.
- * AS MENTIONED IN THE DISCUSSION ON NP$NWL AIP PASSES A
- * REQUEST FOR SUPERVISORY MESSAGES TO NIP. THE REQUEST TO
- * NIP SPECIFIES A CONTIGUOUS BUFFER IN AIP POINTING TO
- * FOOT AS THE FWA AND SPECIFYING LAST-FOOT AS THE LENGTH, OR
- * IF A WRAP AROUND HAS OCCURRED THAN PASSING HEAD-FOOT AS
- * THE LENGTH. THIS WAY NIP IS NOT BURDENED WITH TRYING TO
- * HANDLE CIRCULAR BUFFERS, AND NEITHER NIP NOR AIP HAS TO
- * SPECIAL CASE A SINGLE MESSAGE WRAPPING AROUND IN THE BUFFER.
- * IT DOES, HOWEVER LEAVE AIP WITH THE PROBLEM OF RECOGNIZING
- * WHEN THE LAST MESSAGE IN THE BUFFER DOES NOT COMPLETELY
- * FILL THE BUFFER. THIS PROBLEM IS SOLVED BY NIP ALWAYS WRITING
- * A WORD OF ZEROES BEHIND THE LAST SUPERVISORY MESSAGE IT
- * GIVES TO AIP.
- *
- #
- *ENDIF
- *IF DEF,IMS
- #
- * THE APPLICATION REQUESTS AIP TO DELIVER A SUPERVISORY MESSAGE TO
- * THE APPLICATION"S TEXT AREA BY MAKING A NETGET,NETGETL,NETGETF, OR
- * NETGTFL CALL ON ACN = 0 OR ALN = 0. AIP WILL COPY THE SUPERVISORY
- * MESSAGE FROM THE SMB (SUPERVISORY MESSAGE BUFFER). IF THE SMB IS
- * EMPTY(HEAD = FOOT), THEN AIP SENDS NIP A GSM (GET SUPERVISORY
- * MESSAGE) REQUEST. WHEN AIP READS THE MESSAGES IN THE SMB, IF HEAD
- * IS EQUAL TO ZERO, THEN THE MESSAGES HAVE WRAPPED AROUND AND THE
- * NEXT MESSAGE TO BE READ STARTS AT INDEX FIRST. IF THE SUPERVISORY
- * MESSAGE TO BE DELIVERED TO THE APPLICATION IS LONGER THAN THE
- * SPACE ALLOWED BY THE APPLICATION(TLMAX), THEN THE INPUT BLOCK
- * UNDELIVERABLE BIT (40) IS SET IN THE HEADER WORD AT HA (HEADER
- * ADDRESS SPECIFIED BY THE APPLICATION), AND THE MESSAGE IS NOT
- * DELIVERED. A SUPERVISORY MESSAGE WILL NOT FIT INTO AIP"S SMB IF
- * IT IS LONGER THAN 64 (100B) WORDS.
- *
- * AIP ALLOWS APPLICATION PROGRAMS WHICH RESIDE IN THE HOST COMPUTER
- * TO ACCESS THE NETWORK TO SEND AND RECEIVE DATA FROM REMOTE NODES
- * AND OTHER APPLICATIONS. THE APPLICATION PROGRAM LOADS THE AIP
- * ROUTINES FROM THE LIBRARY NETIO OR NETIOD. NETIOD HAS THE OPTIONS
- * DEBUG AND STAT DEFINED TO TURN ON DEBUG MODE AND STATISTICS
- * GATHERING. BOTH THESE OPTIONS CAUSE RESPECTIVE FILES ZZZZZDN AND
- * ZZZZZSN TO BE OPENED AND WRITTEN ON.
- *
- * FOR PROPER PRESETTING OF COMMON DECK NP$MODE, A ROUTINE CALLING
- * NP$XFER MUST BE CALLED BY THE APPLICATION IN THE APPLICATION"S
- * MAIN OVERLAY. NP$MODE CONTAINS THE FOLLOWING FLAGS:
- *
- * . ACCEPTED - TRUE IF THE APPLICATION HAS COMPLETED A NETON
- *
- * . DEFER$PRO - TRUE IF NIP HAS NOT FINISHED PROCESSING THE
- * WORKLIST FROM AIP.
- *
- * . DEFER$GSM - TRUE IF THE APPLICATION HAS REQUESTED A
- * SUPERVISORY MESSAGE WHEN AIP"S SMB IS EMPTY
- *
- * . NETONNWL - TRUE IF CURRENT WORKLIST IS A NETON.
- *
- * . PARALLEL - TRUE IF THE APPLICATION HAS REQUESTED PARALLEL MODE
- *
- * . SENDGETMM - TRUE IF AIP MAY PUT A GET DATA MESSAGES
- * REQUEST IN THE OUTGOING WORKLIST(NWL)
- *
- * . SENDGETSM - TRUE IF AIP MAY PUT A GET SUPERVISORY MESSAGE
- * REQUEST IN THE OUTGOING WORKLIST(NWL)
- *
- * AT LOAD TIME ALL THE ABOVE FLAGS ARE FALSE.
- *
- * AT NETON TIME THE ADDRESS OF THE NSUP WORD IS PASSED TO AIP. THE
- * NSUP WORD CONTAINS THE FOLLOWING FLAGS:
- *
- * . C$FLAG - TRUE IF THE OPERATION IS COMPLETE
- *
- * . N$FLAG - TRUE IF NAM IS AVAILABLE
- *
- * . I$FLAG - TRUE IF DATA INPUT IS AVAILABLE
- *
- * . S$FLAG - TRUE IF THERE ARE OUTSTANDING SUPERVISORY MESSAGES
- *
- * . D$FLAG - TRUE IF NIP HAS DELIVERABLE DATA FOR THE APPLICATION
- * IF IT ISSUES A NETGETL, NETGTFL, OR NETGTLQ CALL.
- *
- * THE I$FLAG AND S$FLAG ARE SET OR CLEARED AFTER A NETCHEK, NETWAIT,
- * NETGET-S AND NETPUT-S TO REFLECT CURRENT AVAILABILITY OF DATA.
- * C,N$FLAGS ARE SET IN NP$XFER AFTER AIP HAS MADE A SSC CALL AND
- * THESE FLAGS ARE ONLY VALID IN PARALLEL MODE, AS AN SSCALL IS MADE
- * WITHOUT RECALL. C$FLAG AND N$FLAG ARE ALSO SET IN NETCHEK.
- *
- * NETSETP(0) SETS AIP CALLS TO NIP TO BE IN PARALLEL MODE. THIS
- * MEANS THAT AIP"S SSCALLS WILL BE MADE WITHOUT RECALL SO THAT THE
- * APPLICATION WILL NOT LOSE CONTROL OVER THE CPU FOR TOO LONG.
- * HOWEVER, IN PARALLEL MODE THE USER MUST CALL NETCHEK AFTER ALL
- * REQUESTS TO NIP, IN ORDER TO CHECK THAT NIP HAS RESPONDED TO
- * THE REQUEST. DEFER$PRO IS FALSE IF THE NWL HAS BEEN COMPLETELY
- * PROCESSED BY NIP. NP$RESP DOES AIP"S FINAL PROCESSING OF THE
- * REQUESTS ONCE NIP HAS RETURNED REQUESTED INFORMATION. NP$RESP IS
- * CALLED FROM NP$SEND OR NETCHEK. NP$RESP UPDATES THE NP$NWL
- * POINTERS.
- *
- * A NETOFF REQUEST IS ALLOWED AT ANY TIME. TO PERMIT THIS, NETOFF
- * SENDS NIP A SEPARATE WORKLIST CONTAINING ONLY THE NETOFF REQUEST.
- * AT NETOFF TIME, IF DEBUG/STAT IS DEFINED, THEN FILE ZZZZZDN
- * AND ZZZZZSN ARE RESPECTIVELY CLOSED.
- *
- #
- #
- * NETWORK PRODUCTS DOCUMENTATION PAGE
- * NAM INTERNAL SPECIFICATION DATE.
- * 8.0 AIP TABLE STRUCTURE
- #
- *ENDIF
- BEGIN
- *CALL NP$CRT
- # #
- # EXTERNAL ROUTINES: #
- # #
- XREF BEGIN
- PROC NP$RESP; #PROCESSES NIP RESPONSE #
- PROC NP$SEND; #SENDS A WORKLIST TO NIP #
- *IF DEF,STAT
- PROC NP$SN; #INCREMENTS STATISTICS COUNTER#
- *ENDIF
- PROC NP$USI; #UPDATE S AND I BITS IN NSUP #
- END #XREFS#
- # #
- *IF DEF,IMS
- #
- * NETWORK PRODUCTS DOCUMENTATION PAGE
- * NAM INTERNAL SPECIFICATION DATE.
- * 9.0 AIP DETAILED DESCRIPTION
- *1DC NETCHEK
- *
- * 1. PROC NAME AUTHOR DATE
- * NETCHEK S.KRULEVITCH 77/3/4
- *
- * 2. FUNCTIONAL DESCRIPTION
- * CHECKS THAT NIP HAS RETURNED A WORKLIST RESPONSE.
- *
- * 3. METHOD USED
- * THIS ROUTINE IS RELEVANT ONLY WHEN PARALLEL OPERATION HAS BEEN
- * SELECTED. IF PROCESSING OF THE WORKLIST RESPONSE HAS NOT BEEN
- * POSTPONED(DEFER$PRO = FALSE)THEN NETCHEK SIMPLY RETURNS C$FLAG
- * = TRUE,INDICATING AIP AND NIP ARE FINISHED WITH ALL REQUESTS.
- * IF, HOWEVER DEFER$PRO = TRUE, THEN IF AIP HAS NOT RECEIVED THE
- * WORKLIST RESPONSE FROM NIP,AIP SETS C$FLAG = FALSE. IF AIP HAS
- * RECEIVED THE RESPONSE, THEN POSTPONED PROCESSING IS PERFORMED
- * AND AIP SETS C$FLAG = TRUE. C$FLAG IS THE FIRST BIT OF THE
- * NSUP WORD IN THE APPLICATION"S FIELD LENGTH.
- * IF THE RESPONSE FROM NIP INDICATES THAT NIP DID NOT RECEIVE
- * THE WORKLIST BECAUSE NIP WAS BUSY, NETCHEK WILL CALL NP$SEND
- * TO RETRANSMIT THE SAME WORKLIST TO NIP.
- * UPDATE S AND I BITS IN THE NSUP WORD.
- *
- * 4. ENTRY CONDITIONS
- * CTL$CB - COMPLETION BIT FOR NIP PROCESSING.
- * DEFER$PRO - TRUE MEANS SOME PROCESSING OF THE WORKLIST RESPONSE
- * HAS BEEN DEFERRED.
- * ACCEPTED - TRUE IF WORKLIST TRANSFER IS NOT A NETON
- *
- * 5. EXIT CONDITIONS
- * C$FLAG = TRUE INDICATES OPERATION COMPLETE.
- * C$FLAG = FALSE INDICATES OPERATION INCOMPLETE.
- * I$FLAG - TRUE IF INPUT DATA QUEUED IN NIP
- * S$FLAG - TRUE IF SMB NON-EMPTY OR SM QUEUED IN NIP
- * DEFER$PRO =FALSE IF THE WORKLIST RESPONSE HAS BEEN RECEIVED
- * FROM NIP.
- * N$FLAG = TRUE,IF NAM IS AVAILABLE.
- * = FALSE, IF NAM IS NOT AVAILABLE AT A SYSTEM CONTROL PT.
- *
- * 6. COMDECKS CALLED AND SYMPL TEXTS USED.
- * AIPDEF CRCOM NP$MODE NP$NWL
- * NP$STAT
- *
- * 7. ROUTINES CALLED
- * NP$RESP
- * NP$SEND - SENDS A WORKLIST TO NIP
- * NP$SN - INCREMENTS STATISTICS COUNTER
- * NP$USI - UPDATE S AND I BITS IN THE NSUP WORD
- *
- * 8. DAYFILE MESSAGES
- *
- #
- *ENDIF
- #**********************************************************************#
- # NETCHEK EXECUTION BEGINS HERE: #
- # #
- *IF DEF,STAT
- # #
- # UPDATE STATISTICS IF STATISTICS GATHERING IS TURNED ON. #
- # #
- NP$SN(TYPE"CHEK"); #INCREMENT COUNTER #
- *ENDIF
- IF DEFER$PRO
- THEN
- BEGIN
- IF CTL$CB[NCTL]
- THEN
- BEGIN
- IF CTL$NONAM[NCTL]
- THEN
- BEGIN
- N$FLAG = FALSE; #NAM NOT AVAILABLE #
- C$FLAG = TRUE; #AIP COMPLETED PROCESSING #
- RETURN;
- END
- N$FLAG = TRUE; # NAM AVAILABLE #
- IF CTL$BUSY[NCTL]
- THEN
- BEGIN
- SENDGETMM = FALSE; # DO NOT ADD ANOTHER GETMM WKLS#
- SENDGETSM = FALSE; # DO NOT ADD ANOTHER GETSM WKLS#
- RESEND = TRUE; # RESEND WORKLIST TO NIP #
- NP$SEND; # SEND THE SAME WORKLIST TO NIP#
- SENDGETMM = TRUE; # RESTORE SEND GETMM WKLST FLAG#
- SENDGETSM = TRUE; # RESTORE SEND GETSM WKLST FLAG#
- RESEND = FALSE; # RESTORE RESEND FLAG #
- END
- ELSE
- BEGIN
- NP$RESP;
- DEFER$PRO = FALSE;
- C$FLAG = TRUE;
- END
- END #CTL$CB EQ TRUE#
- ELSE
- BEGIN # CTL$CB IS NOT SET #
- IF NOT ACCEPTED
- THEN
- BEGIN # PREVIOUS WORKLIST IS A NETON #
- IF NWL$CB[NHDR+1]
- THEN
- BEGIN # NETON COMPLETED #
- NP$RESP; # PROCESS AWL RESPONSE IF ONE #
- DEFER$PRO = FALSE;
- C$FLAG = TRUE;
- END
- END
- END
- END #DEFER$PRO EQ TRUE#
- ELSE
- BEGIN
- NP$SEND ;
- IF NOT DEFER$PRO
- THEN # WORKLIST ISSUED AND #
- BEGIN # COMPLETED #
- C$FLAG = TRUE ; # SET COMPLETE FLAG #
- END
- END
- NP$USI; # UPDATE S AND I BITS IN NSUP #
- RETURN;
- END #NETCHEK#
- TERM
cdc/nos2.source/nam5871/netchek.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator