*DECK NS$FLR USETEXT COM$NS USETEXT DIR$NS USETEXT ERR$NS USETEXT NPT$NS PROC NS$FLR((RNAME),RI,RL,ERRCODE); # FIND LOAD RECORD # # TITLE NS$FLR - FIND LOAD RECORD. # BEGIN # NS$FLR # # ** NS$FLR - FIND LOAD RECORD. * * J.C. LEE 1981 * * THIS ROUTINE FINDS A LOAD RECORD. * * PROC NS$FLR((RNAME),RI,RL,ERRCODE) * * ENTRY: * RNAME - NAME OF LOAD MODULE RECORD. * * EXIT: * ERRCODE. * RI - RANDOM INDEX OF LOAD MODULE RECORD. * RL - LOAD MODULE RECORD LENGTH. * * METHOD: * DETERMINE IF DEFAULT OR ALTERNATE CCP LOAD FILE * (NLF) IN EFFECT. * LOCATE NLF-INDEX-RECORD TSB. * SEARCH NLF-INDEX-RECORD FOR MATCH "RNAME". * IF FOUND, RETURN "RI" AND "RL". * ELSE, SET ERRCODE TO "NLF ERROR-LOAD MODULE MISSING". * # ITEM RNAME C(6); # NAME OF LOAD MODULE RECORD # ITEM RI U; # RANDOM INDEX OF LOAD MODULE RECORD # ITEM RL U; # RECORD LENGTH # ITEM ERRCODE U; # ERROR CODE # ITEM TSBFWA U; # TSB FWA # ITEM TSBN U; # TSB NUMBER # ITEM TSBSIZE U; # TSB SIZE # $BEGIN XREF BEGIN PROC NS$DBG; # TRACE PROCEDURE CALL # END $END XREF BEGIN FUNC NS$FEC U; # FORMAT ERROR CODE # PROC MOVEOK; # ALLOW TSB TO MOVE # PROC TSBINFO; # LOCATE TSB # END ITEM FOUND B; # RECORD FOUND FLAG # ITEM I I; # LOOP VARIABLE # ITEM TEMP U; # TEMPORARY VARIABLE # CONTROL EJECT; $BEGIN NS$DBG("FLR"); $END ERRCODE = 0; FOUND = FALSE; IF NPT$ALFWD[NTORD] NQ 0 THEN # ALTERNATE CCP LOAD FILE IN EFFECT # BEGIN TSBN = NPT$DIRTSB[NTORD]; # DIRECTORY TSB # TSBINFO(TSBSIZE,TSBFWA,TSBN); # LOCATE TSB # P = TSBFWA; # FWA OF ALTERNATE NLF DIRECTORY # MOVEOK(TSBN); # ALLOW DIRECTORY TSB TO MOVE # END ELSE # DEFAULT CCP LOAD FILE # P = NLFDIRFWA; # FWA OF DEFAULT NLF DIRECTORY # TEMP = (DIR$WC[0] - 1) / DIR$ENTRYL; # ENTRIES IN INDEX RECORD # FOR I = 1 STEP 1 WHILE I LQ TEMP AND NOT FOUND DO # SEARCH INDEX RECORD FOR LOAD MODULE # BEGIN IF DIR$RNAME[I] EQ RNAME THEN # FOUND ENTRY FOR LOAD PARTITION # BEGIN RI = DIR$RSA[I]; # RANDOM INDEX # RL = DIR$RL[I]; # RECORD LENGTH # FOUND = TRUE; END END IF NOT FOUND THEN # NLF ERROR-LOAD MODULE MISSING # BEGIN ERRCODE = NS$FEC(EC"ERR$FILE",FEC"ERR$LMNF"); END RETURN; END # NS$FLR # TERM