FTN4,L SUBROUTINE IDSGM(LU,IFMPT,ILU,IERR),92067-1X558 REV.2026 800131 C C C NAME: IDSGM C SOURCE: 92067-18558 C RELOC: 92067-16558 C PGMR: R.D. C C *************************************************************** C * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * C * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * C * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* C * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * C *************************************************************** C IMPLICIT INTEGER(A-Z) DIMENSION INAM(3),MESG1(20),MESG2(22),MESG3(24),MESG4(10) DATA MESG1/2HTH,2HE ,2HFO,2HLL,2HOW,2HIN,2HG ,2HPR,2HOG,2HRA,2HMS, & 2H H,2HAV,2HE ,2HID,2H S,2HEG,2HME,2HNT,2HS / DATA MESG2/2HPO,2HIN,2HTI,2HNG,2H T,2HO ,2HTH,2HE ,2HFM,2HP ,2HTR, & 2HAC,2HKS,2H Y,2HOU,2H'R,2HE ,2HRE,2HPL,2HAC,2HIN,2HG./ DATA MESG3/2HTH,2HES,2HE ,2HPR,2HOG,2HRA,2HMS,2H M,2HUS,2HT ,2HBE, & 2H R,2HEM,2HOV,2HED,2H B,2HEF,2HOR,2HE ,2HRE,2HAD,2HT , & 2HWI,2HLL/ DATA MESG4/2HRE,2HPL,2HAC,2HE ,2HTH,2HE ,2HTR,2HAC,2HKS,2H. / C C LU IS WHERE READT IS RESTORING THE FMP TRACKS LU 2 OR LU 3 C IFMPT IS THE START OF THE FMP TRACKS C ILU IS THE LIST DEVICE. C IERR = 0 WHEN THERE ARE NO ID SEGMENTS POINTING TO FMP TRACKS C ON THE SPECIFIED DISC LU. C IERR <> 0 WHEN THERE ARE ID SEGMENTS. C C C C THIS SUBROUTINE SEARCHES THROUGH THE ID SEGMENTS VIA C THE KEYWORD TABLE. ALL ID SEGMENTS THAT POINT TO FMP C TRACKS WILL BE IDENTIFIED (LU 2 OR LU 3). THIS C WILL GIVE THE USER AN OPPORTUNITY TO "OF" ID SEGMENTS C SO THAT ON A RESTORE OF LU 2 OR LU 3 THE SYSTEMS INTEGRITY C WILL BE MAINTAINED. C C C GET FWA OF KEYWORD TABLE C IFWA=IXGET(1657B) C C GET ID SEGMENT ADDRESS C ICNTR=-1 IXERR=0 C 100 ICNTR=ICNTR+1 C IDSEG=IXGET(IFWA+ICNTR) C C IF ENTRY IS 0 THEN EXIT (END OF TABLE). C IF(IDSEG.EQ.0)GO TO 300 C C C GET PROGRAM NAME C INAM=IXGET(IDSEG+12) INAM(2)=IXGET(IDSEG+13) INAM(3)=IXGET(IDSEG+14) C C READ DISC ADDRESS FROM ID SEGMENT C CHECK WHETHER IT'S LONG OR SHORT ID C IOFF=26 IF ((IAND(INAM(3),20B)).NE.0) IOFF=19 C C IF PROGRAM TYPE IS ONE THEN CAN'T RESIDE ON FMP TRACKS C IF(IAND(INAM(3),17B).EQ.1)GO TO 100 C C GET DISC ADDRESS FROM ID SEGMENT C IDSCA=IXGET(IDSEG+IOFF) C IF(LU.EQ.2)GO TO 200 C C THIS IS A CHECK FOR ID SEGS. ON LU 3 C IF BIT 15 IS 0 THEN DISC ADDR. IS ON LU 2 C OR IF THE DISC ADDR. IS LESS THAN THE START OF THE FMP TRACKS, C GET ANOTHER ID SEGMENT. C IF(IAND(IDSCA,100000B).EQ.0)GO TO 100 C C IDSCA=(IAND(77600B,IDSCA))/128 C IF(IDSCA.LT.IFMPT)GO TO 100 C C KEEP CHECK OF ID SEGS. POINTING TO FMP TRACKS C IF THERE AREN'T ANY RETURN IERR=0 C OTHERWISE IERR <> 0 C C C FOUND AN ID SEGMENT - PRINT PROGRAM NAME C C PAD FIRST SEVEN BITS OF THIRD WORD IN PROGRAM NAME. IF(IXERR.NE.0)GO TO 170 C CALL EXEC(2,ILU,MESG1,20) CALL EXEC(2,ILU,MESG2,22) CALL EXEC(2,ILU,MESG3,24) CALL EXEC(2,ILU,MESG4,10) C IERR=-1 C 170 IXERR=IXERR+1 C C INAM(3)=IOR(IAND(77400B,INAM(3)),40B) C CALL EXEC(2,ILU,INAM,3) C C GET ANOTHER ID SEGMENT C GO TO 100 C C THIS IS THE CHECK OF ID SEGS. POINTING TO FMP TRACKS ON LU 2 C C IF THE BIT 15 IS 1,THEN DISC ADDR. POINTS TO LU 3 C THEREFORE DON'T BOTHER TO LOOK. C 200 IF(IDSCA.LT.0)GO TO 100 C IDSCA=(IAND(77600B,IDSCA))/128 C IF(IDSCA.LT.IFMPT)GO TO 100 C C KEEP CHECK OF ID SEGS. POINTING TO FMP TRACKS ON LU 2 C IF THERE AREN'T ANY, RETURN IERR=0 C OTHERWISE IERR <> 0 C PRINT PROGRAM NAME C PAD THIRD WORD OF PROGRAM NAME WITH A BLANK C INAM(3)=IOR(IAND(77400B,INAM(3)),40B) C C GIVE MESSAGE TO REMOVE ID SEGMENTS C IF(IXERR.NE.0)GO TO 220 C CALL EXEC(2,ILU,MESG1,20) CALL EXEC(2,ILU,MESG2,22) CALL EXEC(2,ILU,MESG3,24) CALL EXEC(2,ILU,MESG4,10) C IERR=-1 C C 220 IXERR=IXERR+1 C CALL EXEC(2,ILU,INAM,3) C C GET ANOTHER ID SEGMENT C GO TO 100 C C 300 RETURN END