cdc:nos2.source:nam5871:ipughbn
Table of Contents
IPUGHBN
Table Of Contents
- [00003] FUNC IPUGHBN (HOST, IPADDR, HOSTUN) B
- [00005] IPUGHBN - GET HOST BY NAME.
- [00046] FUNC IATTACH I
- [00047] FUNC IGET I
- [00048] PROC IPUCIAN
- [00049] PROC IPUMCLR
- [00050] PROC MESSAGE
- [00051] PROC READC
- [00052] PROC RETERN
- [00083] PROC EXTHOST
- [00145] FUNC FINDHST B
Source Code
- IPUGHBN.txt
- *DECK IPUGHBN
- USETEXT TEXTIPL
- FUNC IPUGHBN (HOST, IPADDR, HOSTUN) B;
- *CALL COPYRITE CDCNET - COPYRIGHT CONTROL DATA. 1992.
- # TITLE IPUGHBN - GET HOST BY NAME. #
- BEGIN # IPUGHBN #
- #
- **** IPUGHBN - GET HOST BY NAME.
- *
- * THIS FUNCTION READS THE TCP HOST FILE, AND EXTRACTS THE IP
- * ADDRESS OF THE SUPPLIED HOST NAME. THE FUNCTION RETURNS TRUE IF
- * THE HOST WAS FOUND.
- *
- * FUNC IPUGHBN (HOST, IPADDR, HOSTUN)
- *
- * ENTRY HOST = 2 WORD HOST NAME, DISPLAY CODE,
- * LEFT JUSTIFIED.
- * HOSTUN = TCPHOST USERNAME, DISPLAY CODE,
- * LEFT JUSTIFIED.
- *
- * EXIT IPUGHBN = TRUE IF HOST NAME FOUND.
- * IPADDR = 3 WORD ADDRESS ARRAY.
- *
- * METHOD THE FET IS INITIALIZED AND THE FILE IS ATTACHED. BOTH
- * A INDIRECT ACCESS FILE AND A DIRECT ACCESS FILE IS
- * SEARCHED FOR. IF THE HOST FILE IS NOT FOUND, THE FUCTION
- * RETURNS A FALSE CONDITION AND A DAYFILE MESSAGE IS ISSUED.
- * THE FUNCTION *FINDHST* IS CALLED TO LOCATE THE HOST NAME
- * *HOST*. IF NOT FOUND, A FALSE CONDITION IS RETURNED AND
- * A DAYFILE MESSAGE IS ISSUED. ONCE THE HOST NAME IS
- * LOCATED, THE FIRST ENTRY (IP ADDRESS) OF THE CURRENT LINE
- * IS LOCATED. A SPACE IS ADDED TO THE END OF THE ENTRY TO
- * MAKE SURE THE IP ADDRESS IS TERMINATED WITH A NON-NUMERIC.
- * PROCEDURE *IPUCIAN* IS CALLED TO CONVERT THE DISPLAY CODED
- * IP FORMATTED ADDRESS INTO A NUMERIC FORMAT USED TO
- * COMMUNICATE WITH THE CDCNET TCP/IP GATEWAY.
- *
- #
- #
- **** PROC IPUGHBN - XREF LIST
- #
- XREF
- BEGIN
- FUNC IATTACH I; # ATTACH A PERMANENT FILE #
- FUNC IGET I; # GET A PERMANENT FILE #
- PROC IPUCIAN; # CONVERT IP ADDRESS TO NUMERIC #
- PROC IPUMCLR; # CLEAR MEMORY #
- PROC MESSAGE; # MESSAGE MACRO #
- PROC READC; # READ CODED LINE #
- PROC RETERN; # RETURN A LOCAL FILE #
- END
- #
- **
- #
- ITEM HOST C(30); # HOST NAME SEARCHING FOR #
- ITEM HOSTUN C(10); # TCPHOST USERNAME #
- ARRAY IPADDR [00:00] S(1);; # ADDRESS IN NUMERIC FORM #
- ITEM DIND I; # DESTINATION INDEX #
- ITEM EOL B; # END OF LINE INDICATOR #
- ITEM HOSTNM C(30); # HOST NAME FROM FILE #
- ITEM INDEX I; # LOOP INDEX #
- ITEM RESULT I; # RESULT FROM *READC* MACRO #
- ITEM SIND I; # SOURCE INDEX #
- ARRAY FNFMSG [00:00] S(3);
- BEGIN
- ITEM FNF$MSG C(00,00,23) = ["TCPHOST FILE NOT FOUND."];
- ITEM FNF$ZBYTE U(02,18,42) = [0];
- END
- ARRAY HNFMSG [00:00] S(5);
- BEGIN
- ITEM HNF$MSG C(00,00,46) =
- ["HOST XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX NOT FOUND."];
- ITEM HNF$HOST C(00,30,30);
- ITEM HNF$ZBYTE U(04,36,24) = [0];
- END
- CONTROL EJECT;
- PROC EXTHOST;
- BEGIN # EXTHOST #
- #
- **** THIS PROCEDURE EXTRACTS A HOST NAME FROM A LINE OF DATA. THE
- * THE HOST NAME IS PUT IN UPPERCASE DISPLAY.
- *
- #
- ITEM SCHAR C(1); # CHARACTER READ FROM FILE #
- HOSTNM = CHARSP$;
- SCHAR = C<SIND,1>WORK$CHAR [0];
- FOR INDEX = 0
- WHILE (SCHAR NQ CHARSP$)
- DO
- BEGIN # EXAMINE LINE OF DATA READ #
- IF SCHAR EQ ESC76$
- THEN
- BEGIN
- IF (C<SIND+1,1>WORK$CHAR [0] GQ CHARA$) OR
- (C<SIND+1,1>WORK$CHAR [0] LQ CHARZ$)
- THEN
- BEGIN # CONVERT TO UPPER CASE #
- SIND = SIND + 1;
- SCHAR = C<SIND,1>WORK$CHAR [0];
- END
- END
- ELSE IF SCHAR EQ CHARNSIGN$
- THEN
- BEGIN # COMMENT TREATED AS END OF LINE#
- EOL = TRUE;
- RETURN;
- END
- ELSE IF SCHAR EQ CHARNUL$
- THEN
- BEGIN # CHECK FOR END OF LINE #
- IF C<SIND+1,1>WORK$CHAR [0] EQ CHARNUL$
- THEN
- BEGIN
- EOL = TRUE;
- RETURN;
- END
- END
- IF DIND LS HOSTSIZE$
- THEN
- BEGIN
- C<DIND,1>HOSTNM = SCHAR;
- DIND = DIND + 1;
- END
- SIND = SIND + 1;
- SCHAR = C<SIND,1>WORK$CHAR [0];
- END # EXAMINE LINE OF DATA READ #
- SIND = SIND + 1; # NEXT CHARACTER IN LINE #
- RETURN;
- END # EXTHOST #
- CONTROL EJECT;
- FUNC FINDHST B;
- BEGIN # FINDHST #
- #
- **** THIS FUNCTION SEARCHES THE TCPHOST FILE FOR AN ENTRY MATCHING THE
- * SPECIFIED HOST NAME. IF FOUND, A TRUE RESULT IS RETURNED AND THE
- * PROCEDURE TERMINATES.
- *
- #
- ITEM INDEX1 I; # LOOP INDEX #
- ITEM INDEX2 I; # LOOP INDEX #
- FINDHST = FALSE; # DEFAULT TO NOT FOUND #
- FET$STAT[0] = 1; # CLEAR STATUS + SET COMPLETION #
- READC (FET [0], WORKBUF [0], WORKSIZ$, RESULT);# READ FIRST LINE #
- FOR INDEX1 = 0
- WHILE (RESULT EQ 0)
- DO
- BEGIN # LOOP TILL MATCH OR END #
- SIND = 0; # INITIALIZE SOURCE INDEX #
- EOL = FALSE;
- FOR INDEX2 = 0 WHILE (NOT EOL)
- DO
- BEGIN # LOOP TILL END OF LINE OR MATCH#
- DIND = 0; # DESTINATION INDEX #
- EXTHOST;
- IF DIND GR 0
- THEN
- BEGIN # HOST NAME ASSEMBLED #
- IF (C<0,HOSTSIZE$>HOSTNM EQ C<0,HOSTSIZE$>HOST)
- THEN
- BEGIN # HOST NAME FOUND #
- FINDHST = TRUE;
- RETURN;
- END
- END
- END # LOOP TILL END OF LINE OR MATCH#
- #
- **** IF MATCH NOT FOUND THEN READ NEXT LINE OF HOST NAME FILE.
- #
- READC (FET [0], WORKBUF [0], WORKSIZ$, RESULT);# READ LINE #
- END # LOOP TILL MATCH OR END #
- RETURN; # RETURN TO CALLER #
- END # FINDHST #
- CONTROL EJECT;
- #
- **** START MAIN PROCEDURE
- #
- IPUGHBN = FALSE; # HOST FILE/NAME NOT FOUND #
- #
- **** INITIALIZE THE FET ENTRY.
- #
- IPUMCLR (LOC (FET [0]), FETSIZ$); # CLEAR FET LOCATION #
- FET$LFN [0] = TCPHFN$; # SET LOCAL FILE NAME #
- FET$COMPB [0] = TRUE; # SET COMPLETION BIT #
- FET$EP [0] = TRUE; # SET ERROR PROCESSING BIT #
- FET$LEN [0] = FETSIZ$ - 5; # SET FET SIZE - 5 WORDS #
- FET$FIRST [0] = LOC (CIOBUF [0]); # SET FIRST ADDRESS #
- FET$IN [0] = FET$FIRST [0]; # SET IN ADDRESS #
- FET$OUT [0] = FET$FIRST [0]; # SET OUT ADDRESS #
- FET$LIMIT [0] = FET$FIRST [0] + FBUFSIZ$;# SET LIMIT ADDRESS #
- FET$UN [0] = HOSTUN;
- #
- **** ATTEMPT TO ACCESS HOST NAME FILE.
- #
- IF IGET(FET[0]) NQ 0
- THEN
- BEGIN # COULD NOT GET HOST NAME FILE #
- IF IATTACH(FET[0]) NQ 0
- THEN
- BEGIN # COULD NOT ATTACH HOST FILE #
- MESSAGE(FNFMSG, 0); # ISSUE DAYFILE MESSAGE #
- RETURN;
- END
- END # COULD NOT GET HOST NAME FILE #
- #
- **** FIND IP ADDRESS FOR SPECIFIED HOST NAME.
- #
- IF NOT FINDHST
- THEN
- BEGIN # HOST NAME SPECIFIED UNKNOWN #
- HNF$HOST [0] = HOST;
- MESSAGE (HNFMSG [0], 0); # ISSUE DAYFILE MESSAGE #
- END
- ELSE
- #
- **** CONVERT DISPLAY CODE FORM OF IP ADDRESS INTO INTERNET FORMAT AND
- * STORE INTO IPADDRESS. SET RETURN STATUS TO HOST NAME FOUND.
- #
- BEGIN # HOST NAME KNOWN #
- DIND = 0;
- SIND = 0;
- FOR INDEX = 0 WHILE (DIND EQ 0)
- DO
- BEGIN # EXTRACT HOST ADD IN DISPLAY #
- EXTHOST;
- END
- C<DIND,1>HOSTNM = CHARSP$; # ADD TERMINATING SPACE TO ADDR #
- IPUCIAN (HOSTNM, IPADDR); # CONVERT IP ADDRESS TO NUMERIC #
- IPUGHBN = TRUE; # HOST NAME FOUND #
- END # HOST NAME KNOWN #
- RETERN (FET[0]); # RETURN HOST NAME FILE #
- END # IPUGHBN #
- TERM
cdc/nos2.source/nam5871/ipughbn.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator