C$$$$$TROGRAM TAGFIL - WRITTEN FOR PDP11, DOS O.S. FORTRAN. C AND RT 11 FORTRAN. THE DIFFERENCES BETWEEN DOS VERSION C AND RT 11 VERSION ARE FILE ACCESS ROUTINES. C BY ROBERT E.WELLS AND ROBERT FEINSTEIN C MARINE BIOMEDICAL INSTITUTE C UNIVERSITY OF TEXAS MEDICAL BRANCH, C GALVESTON, TEXAS, 77550. WRITTEN 29 JULY 1975. C C THIS PROGRAM IS USED FOR MAINTAINING FILE DOCUMENTATION C IN THE FORM OF ANNOTATED AND UPDATABLE DISK FILE DIRECTORIES. C IT REQUESTS FROM THE USER THE NAMES OF THREE FILES: C (1) OLD TAGGED DIRECTORY - THIS IS A DIRECTORY PREVIOUSLY CREATED C BY THIS PROGRAM WHICH ONE WISHES TO UPDATE (OR IF CREATING A NEW C TAGGED FILE, THIS CAN BE MOST ANYTHING). PREVIOUSLY C ASSIGNED TAGS ARE TRANSFERRED FROM HERE TO THE NEW TAGGED DIRECT- C ORY. C (2) PIP DIRECTORY - THIS IS A DISK DIRECTORY PRODUCED BY PIP. C THIS DIRECTORY IS USED TO UPDATE THE OLD TAGGED DIRECTORY BY C REFLECTING ADDED OR DELETED FILES AND NEWER VERSIONS OF OLD ONES. C (3) NEW TAGGED DIRECTORY - THIS IS THE UPDATED TAGGED DIRECTORY C PRODUCED BY TAGFIL. C C FOR EVERY FILE IN THE PIP DIRECTORY, THE OLD TAGGED DIRECTORY C IS SEARCHED. IF A TAG EXISTS FOR THE FILE, IT IS COPIED INTO THE N C NEW TAGGED DIRECTORY. IF NOT, A TAG FOR THE FILE IS REQUESTED FROM C THE TERMINAL. IF YOU DONT WISH TO TAG A FILE, JUST HIT . C MODIFICATIONS TO OLD TAGS AND SIMILAR OPERATIONS CAN BEST BE C PERFORMED USING EDIT. C LOGICAL UNIT ASSIGNMENTS: C IOLD - OLD TAGGED DIRECTORY. C IDIR - PIP DIRECTORY. C INEW - NEW TAGGED DIRECTORY. C ITI - TERMINAL INPUT. C ITO - TERMINAL OUTPUT. C COMMON /IODEV/ IOLD,IDIR,INEW,ITI,ITO COMMON IBL,IDOT,ICNT,JNAM(10),FILE(3) COMMON /ENTRY/ INAM(10),ICOD(24),ITAG(80) COMMON /SIZES/ NAMSIZ,ICDSZ,ITGSZ C DATA IOLD,IDIR,INEW,ITI,ITO/1,2,3,5,5/ DATA IBL,IDOT,ICNT/1H ,1H.,0/ NAMSIZ=10 ICDSZ=24 ITGSZ=80 C C INTRODUCE YOURSELF, KID.... WRITE(ITO,790) C GET LOGICAL UNIT FILE ASSIGNMENTS... WRITE(ITO,810) READ(ITI,800)(FILE(I),I=1,3) CALL ASSIGN(1,FILE,12) WRITE(ITO,820) READ(ITI,800)(FILE(I),I=1,3) CALL ASSIGN(2,FILE,12) WRITE(ITO,830) READ(ITI,800)(FILE(I),I=1,3) CALL ASSIGN(3,FILE,12) C 790 FORMAT(' TAGFIL - (JULY 1975)') 800 FORMAT(3A4) 810 FORMAT(' OLD TAGGED DIREDTORY FILE?',/,'$*') 820 FORMAT(' PIP DIRECTORY FILE?',/,'$*') 830 FORMAT(' NEW TAGGED DIRECTORY FILE?',/,'$*') C C MAIN LOOP - READ NEXT LINE FROM IDIR... 10 READ(IDIR,700,END=500)(INAM(I),I=1,NAMSIZ),(ICOD(I),I=1,ICDSZ) C IS IT A DIRECTORY ENTRY? (LOOK FOR PERIOD IN COL 7) IF(INAM(7).NE.IDOT) GOTO 200 C ITS AN ENTRY, LOOK FOR IT IN IOLD... CALL SEARCH(IFOUND) IF(IFOUND.GE.0) GOTO 100 C IF NOT TAGGED IN IOLD, REQUEST TAG FROM TERMINAL. WRITE(ITO,710) (INAM(I),I=1,NAMSIZ),(ICOD(I),I=1,ICDSZ) READ(ITI,700) (ITAG(I),I=1,ITGSZ) 100 CONTINUE IRT=ITGSZ 110 IF(ITAG(IRT).NE.IBL) GOTO 120 IRT=IRT-1 IF(IRT.GT.1) GOTO 110 120 CONTINUE WRITE(INEW,700) (INAM(I),I=1,NAMSIZ),(ICOD(I),I=1,ICDSZ), 1 (ITAG(I),I=1,IRT) GOTO 10 C IT ISNT AN ENTRY... JUST COPY IT OVER... 200 WRITE(INEW,700)(INAM(I),I=1,NAMSIZ),(ICOD(I),I=1,ICDSZ) WRITE(ITO,720) (INAM(I),I=1,NAMSIZ),(ICOD(I),I=1,ICDSZ) GOTO 10 500 END FILE INEW WRITE(ITO,730) STOP C 700 FORMAT(114A1) 710 FORMAT(1X,34A1,/,2H$?) 720 FORMAT(1X,114A1) 730 FORMAT(13H END - TAGFIL) END x