From: BIGVAX::edu%"toby%xtal.dnet@ttown.msc.edu" 10-MAR-1992 16:19:52.26 To: snyder@ttown.apci.com CC: Subj: type sys$input ! FILE(S) [-.XFER]*.* ENCLOSED Received: From UMNACVX(SMTPUSER) by CERAMICS with Jnet id 7101 for SNYDER@CERAMICS; Tue, 10 Mar 1992 16:17 EST Received: from noc.msc.edu by vx.acs.umn.edu; Tue, 10 Mar 92 15:20 CST Received: from ttown.apci.com by noc.msc.edu (5.65/MSC/v3.0(901107)) id AA28284; Tue, 10 Mar 92 15:16:13 -0600 Received: from XTAL.DECnet MAIL11D_V3 by ttown.apci.com (5.57/Ultrix3.0-C) id AA22999; Tue, 10 Mar 92 16:15:38 -0500 Date: Tue, 10 Mar 92 16:15:38 -0500 From: toby%xtal.dnet@ttown.msc.edu Subject: type sys$input ! FILE(S) [-.XFER]*.* ENCLOSED To: snyder@ttown.apci.com Message-id: <9203102115.AA22999@ttown.apci.com> X-Envelope-to: snyder@CERAMICS.BITNET $ copy/log sys$input DATCOD.FOR;2 $deck/dollars=$EODBHTCOPY** FUNCTION DATCOD( DAY ) C C PROGRAMMER: R.S. ZHOU C ALFRED UNIVERSITY, FEB-1987 C C THIS ROUTINE ENCODES D-500 SYSTEM DATE C CHARACTER DAY*9, DAT*6 CHARACTER*36 MONTHS DATA MONTHS/'JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC'/ DATCOD = 0.0 IVAL = INDEX( MONTHS, DAY(4:6) ) IF( IVAL.GT.0 ) THEN DAT(1:2) = DAY(1:2) C NB -- correction for month (BHT) ENCODE( 2, 1, DAT(3:4) ) (IVAL+2)/3 DAT(5:6) = DAY(8:9) DECODE( 6, 2, DAT, ERR=9 ) VAL DATCOD = VAL ENDIF 1 FORMAT(I2) 2 FORMAT(F7.0) 9 RETURN END $EODBHTCOPY** $ copy/log sys$input FILECONV.CBS;37 $deck/dollars=$EODBHTCOPY** C================================================================== C C COMMON BLOCKS FOR PROGRAM FILECONV C C================================================================== C C GENERAL BLOCKS... C PARAMETER DTOR= 0.8726646259E-2, RTOD= 114.591559 COMMON /GENRAL/ IREC,REFRSH LOGICAL REFRSH C C IREC ----- READ RECORD POINTER (FOR DEBUGING PURPOSE) C REFRSH --- SET TO TRUE IF SCREEN NEEDS TO BE UPDATED (BHT) C================================================================== C C INPUT/OUTPUT BLOCKS... C PARAMETER IINP= 1, IOUT= 2, NTYP= 60 CHARACTER FILTYP(NTYP)*24 CHARACTER FILINP*32, FILOUT*32 COMMON/IOFILE/IERR,JFIL,IFLI,IFLO,ITYI,ITYO,FILINP,FILOUT,FILTYP C C IERR --- ERROR FLAG: C FROM READ: 0=NO ERROR, 1=ERROR DURING READ, 2=OPEN FAILURE C 3=BAIL OUT C FROM WRITE: 0=NO ERROR, 1=ERROR DURING WRITE OR OPEN FAILURE C 3=BAIL OUT C JFIL ----- FILE TYPE NOT SUPPORTED YET C IFLI ----- INPUT FILE TYPE C IFLO ----- OUTPUT FILE TYPE C ITYI ----- INPUT FILE CATEGORY C 1=RAW, 2=DIF, 3=PLT, 4=DAT C ITYO ----- OUTPUT FILE CATEGORY C 1=RAW, 2=DIF, 3=PLT, 4=DAT C IINP ----- LOGICAL UNIT NUMBER FOR INPUT DATA FILE C IOUT ----- LOGICAL UNIT NUMBER FOR OUTPUT DATA FILE C FILINP --- INPUT DATA FILENAME C FILOUT --- OUTPUT DATA FILENAME C NTYP ----- MAX NUMBER OF FILE TYPES CONVERTABLE C FILTYP --- CHARACTER ARRAY THAT STORES THE FILE TYPE NAME C================================================================== C C FILE HEADER BLOCK... C INTEGER*2 ITYP COMMON /FILHED/ ITYP, NHDB, ISBF, LENG C C ITYP --- DATA FILE TYPE C NHDB --- NUMBER OF RECORDS IN THE HEADER BLOCK C ISBF --- STARTING RECORD OF SPECIFICATION BLOCK REFERENCES C LENG --- LENGTH OF SPECIFICATION BLOCK REFERENCES C================================================================== C C FILE BLOCK REFERENCES... C PARAMETER NSBR= 12 CHARACTER IRLR(NSBR)*4 COMMON /FILRFR/ IRPR(NSBR,2), IRLR C C NSBR --- NUMBER OF SPECIFICATION BLOCK REFERENCES C IRPR --- SPECIFICATION BLOCK REFERENCES (POINTERS AND LENGTH) C IRLR --- LABEL OF SPECIFICATION BLOCK REFERENCES C================================================================== C C FILE DESCRIPTION BLOCK... C INTEGER*2 FTYP, MTYP, NREP, MPRO, NRNG CHARACTER NAME(3)*4, SCAN*1, STYP*1, SLID(20)*4 COMMON /FILDES/ NAME, DATM, TIMM, FTYP, MTYP, NREP, 1 MPRO, NRNG, SCAN, STYP, SLID C C NAME --- OPERATOR NAME C DATM --- ENCODED DATE C TIMM --- ENCODED TIME C FTYP --- FILE TYPE C MTYP --- METHOD OF ANALYSIS C NREP --- NUMBER OF SERIES OF MEASUREMENTS C MPRO --- MEASUREMENT PROCEDURE C NRNG --- NUMBER OF SCAN RANGES C SCAN --- SCAN MODE C STYP --- SERIES TYPE C SLID --- SAMPEL ID C================================================================== C C LINE MEASUREMENT BLOCK... C COMMON /LINEMM/ BANG(14), DANG(14) C C BANG(1) --- STARTING ANGLE C BANG(2) --- ENDING ANGLE C BANG(3) --- STEP WIDTH C BANG(4) --- MAX COUNTS C BANG(5) --- TWO-THETA OF MAX COUNTS C BANG(6) --- MIN COUNTS C BANG(7) --- TWO-THETA OF MIN COUNTS C BANG(8) --- RESERVED C BANG(9) --- NUMBER OF OSCILLATIONS C BANG(10)--- COUNT TIME (SEC) FOR PEAK C BANG(11)--- COUNT TIME FOR BACKGROUND C BANG(12)--- RESERVED C BANG(13)--- DELAY TIME C BANG(14)--- FIXED ANGLE OF MEASUREMENT C DANG(*) --- USER MODIFIABLE SET OF BANG(*) C================================================================== C C INSTRUMENTATION BLOCK... C INTEGER*2 DIFNUM, CHRLIN CHARACTER ANODE(6)*2,DIFVER*1,GONINT*1,ELEMT*2 REAL*4 WAVE COMMON /INSTRU/ IELE,WAVE(5,6),ANODE, DIFNUM,DIFVER,GONINT & ,ELEMT,CHRLIN C C IELE -------- TARGET ELEMENT (DEFAULT=4,Cu) C WAVE(*,1) --- Cr C WAVE(*,2) --- Fe C WAVE(*,3) --- Co C WAVE(*,4) --- Cu C WAVE(*,5) --- Mo C WAVE(*,6) --- USER SPECIFIED C WAVE(1,*) --- WAVELENGTH OF K-ALPHA 1 C WAVE(2,*) --- WAVELENGTH OF K-ALPHA 2 C WAVE(3,*) --- WAVELENGTH OF K-ALPHA C WAVE(4,*) --- WAVELENGTH OF K-BETA C WAVE(5,*) --- KA1/KA2 RATIO C================================================================== C C INTENSITY DATA BLOCK... C PARAMETER MNP= 10000 COMMON /COUNTS/ MODE, NPTS, XOBS(MNP), YOBS(MNP) C C MNP ---- MAXIMUM NUMBER OF DATA POINTS ALLOWED C MODE --- 0 = X --- TWO-THETA C 1 = X --- D-SPACING C 2 = X --- Q-SCAN (Q=2PI/D=4PI*SIN(THETA)/LAMDA) C NPTS --- TOTAL NUMBER OF DATA POINTS STORED IN YOBS C XOBS --- ARRAY TO STORE THE X-VALUES C YOBS --- ARRAY TO STORE THE RAW COUNTS C================================================================== C C DIFILE BLOCK... C PARAMETER MNK= 500 CHARACTER PEAK(MNK)*4 C INTEGER*4 PHKL(3,MNK) * INTEGER*2 PHKL(3,MNK) ! S.Z. for d5000 format INTEGER*2 PHKL(4,MNK) ! D.P.M. COMMON /DIFILE/ NPKS, IRES, JRES, CUTI(2), CUTF(2), 1 F2TH(MNK), FDSP(MNK), C2TH(MNK), CDSP(MNK), 1 PHGH(MNK), AREA(MNK,2), RELA(MNK), 1 FWHM(MNK), PHKL, PEAK C C MNK ---- MAXIMUM NUMBER OF PEAKS ALLOWED C NPKS --- TOTAL NUMBER OF PEAKS STORED C IRES --- RESIDUAL PATTERN FLAG: 0=CONTAINED, 1=NOT CONTAINED C JRES --- USE THE RESIDUAL PATTERN: 1=NO, 2=YES C CUTI --- INTENSITY CUTOFFS (%) C CUTF --- FWHM CUTOFFS (D) C F2TH --- OBSERVED TWO-THETA C FDSP --- OBSERVED D-SPACING C C2TH --- CORRECTED TWO-THETA C CDSP --- CORRECTED D-SPACING C PHGH --- PEAK HEIGHT (CPS) C AREA(*,1) --- INTEGRATED INTENSITY C AREA(*,2) --- RESIDUAL INTENSITY C RELA --- RELATIVE INTENSITY C FWHM --- FULL WIDTH AT HALF MAXIMUM C PHKL --- REFLECTION HKL C PEAK --- PEAK TYPE LABEL C================================================================== $EODBHTCOPY** $ copy/log sys$input RDISAS.FOR;1 $deck/dollars=$EODBHTCOPY** SUBROUTINE RDISAS C C PROGRAMMER: R. L. SNYDER C ALFRED UNIVERSITY, JUNE-1987 C C THIS ROUTINE READS FROM A ??? DIFILE C AND STORES IN THE CORRESPONDING COMMON BLOCKS C INCLUDE 'FILECONV.CBS' REAL*4 LAMDA INTEGER*2 ITIT(40), HH, KK, LL EQUIVALENCE (ITIT,SLID) C C THE FOLLOWING IS A DUMMY ROUTINE UNTIL WE GET THE CORRECT FORMAT C CALL NOTWRN RETURN END $EODBHTCOPY** $ copy/log sys$input RPLSHA.FOR;4 $deck/dollars=$EODBHTCOPY** SUBROUTINE RPLSHA C C PROGRAMMER: R.S. ZHOU C ALFRED UNIVERSITY FEB-1987 C C THIS ROUTINE READS FROM A SHADOW OUTPUT PLOT DATA FILE C AND WRITES DATA AND PAR FILES FOR GRAFIT. C C INCLUDE 'FILECONV.CBS' C C PARAMETER ( PDATA = 0, POINTS = 1, MARKER = 2 ) PARAMETER ( ERRORY = 3, ERRORX = 4 ) LOGICAL FORMATTED !Is the data file formatted or not? C C Header Section C Records 1 - 3 CHARACTER*90 QFTITL !Plot Title C Records 4 & 5 Axis parameters C Record 6 Number of data groups C C Data-Group Attribute Section CHARACTER QPLTTL(20)*20 !Data group label INTEGER KPLCOD(20) REAL PPLOFF(20) INTEGER KPLPEN(20), KPLMRK(20) REAL PPLINC(20) C C Data Section INTEGER NSETID, NDPTS REAL SANGLE C C REAL XVAL( MNP ), YOBS( MNP ) REAL TWOTHT( MNP), DSPACE( MNP ) INTEGER IWAVE( MNP ) C C End of new data declarations. C CHARACTER FILPAR*40 C CHARACTER TEXT*80, FILPAR*32, SLABL(20)*20 C DIMENSION IDPL(20) C CALL COLORS(-1) CALL PUTEXT('Writing the output file... Please wait...',41,24,1) C C============================================================== C TRY TO OPEN THE INPUT FILE AS AN FORMATTED FILE FIRST... C============================================================== C CLOSE( UNIT=IINP ) FORMATTED = .TRUE. OPEN( UNIT=IINP, FILE=FILINP, STATUS='OLD', 1 FORM='FORMATTED', READONLY, ERR=888 ) READ(IINP, 1001, err=3000) QPLFHD 1001 FORMAT(A78) C C Reopen the file the proper way. C 3000 CLOSE( UNIT = IINP ) OPEN( UNIT=IINP, FILE=FILINP, STATUS='OLD', 1 FORM='UNFORMATTED', READONLY, ERR=888 ) print *, 'File is UNformatted' C C Open the output file as formatted for now. Will be same as input later. C CLOSE( UNIT=IOUT ) OPEN( UNIT=IOUT, FILE=FILOUT, STATUS='NEW', 1 FORM='FORMATTED', ERR=666 ) C C Read the header information. C print *, 'Read HEADER UNformatted' READ(IINP) QFTITL READ(IINP) PPLSCA, KPLAXN, KPLAXD READ(IINP) KPLXID, PPLXOR, PPLXLN, PPLXST, PPLXEN, PPLXDV READ(IINP) KPLYID, PPLYOR, PPLYLN, PPLYST, PPLYEN, PPLYDV READ(IINP) NDGRPS CBHT ENDIF C C Read data id records C DO I = 1, NDGRPS IF ( FORMATTED ) THEN READ(IINP,2001) QPLTTL(I), KPLCOD(I), PPLOFF(I), 1 KPLPEN(I), KPLMRK(I), PPLINC(I) 2001 FORMAT(A20, I9, F9.2, 2I9, F9.4) ELSE READ(IINP) QPLTTL(I), KPLCOD(I), PPLOFF(I), 1 KPLPEN(I), KPLMRK(I), PPLINC(I) ENDIF ENDDO C C Read the data records DO I = 1, NDGRPS C How many points etc to read. IF ( FORMATTED ) THEN READ(IINP, 3001) NSETID, NDPTS, SANGLE 3001 FORMAT(2I6,F10.4) ELSE READ(IINP) NSETID, NDPTS, SANGLE ENDIF NREC = NDPTS / 10 NREM = NDPTS - (NREC * 10) NFIL = 10 - NREM NTRK = 0 C Do we have pattern data 3100 IF ( KPLMRK(I) .NE. PDATA ) GOTO 3200 IF ( FORMATTED ) THEN DO K = 1, NREC READ(IINP, 3101) ( YOBS(J), J = (NTRK+1), (NTRK+10)) NTRK = NTRK + 10 ENDDO 3101 FORMAT( 10F8.1 ) ELSE READ(IINP) (YOBS(J), J = 1, NDPTS ) ENDIF C Calculate the X values DO J = 0, NDPTS - 1 XOBS(J+1) = SANGLE + REAL(J+1) * PPLINC(I) ENDDO WRITE(IOUT,*,ERR=666) NDPTS !Make sure we have a count IF ( FORMATTED ) THEN C DO K = 1, NREC C WRITE(IOUT, 3151) (XOBS(J), YOBS(J), J =(NTRK+1), (NTRK+10)) WRITE(IOUT, 3151) (XOBS(J), YOBS(J), J = 1, NDPTS) C NTRK = NTRK + 10 C ENDDO 3151 FORMAT( 2F10.4 ) ELSE WRITE(IOUT) (XOBS(J), YOBS(J), J = 1, NDPTS ) ENDIF GOTO 3999 C C Do we have Data Points 3200 IF ( KPLMRK(I) .NE. POINTS ) GOTO 3300 IF ( FORMATTED ) THEN C DO K = 1, NREC READ(IINP, 3201) (XOBS(J), YOBS(J), J = 1, NDPTS) C NTRK = NTRK + 10 C ENDDO 3201 FORMAT( 2F10.4 ) ELSE READ(IINP) (XOBS(J), YOBS(J), J = 1, NDPTS) ENDIF C C Write standard formatted XY pairs preceeded by the count C and label information to the .PAR file. WRITE(IOUT,*,ERR=666) NDPTS !Make sure we have a count IF ( FORMATTED ) THEN c DO K = 1, NREC c WRITE(IOUT, 3251) (XOBS(J), YOBS(J), J =(NTRK+1), (NTRK+10)) WRITE(IOUT, 3251) (XOBS(J), YOBS(J), J =1, NDPTS) c NTRK = NTRK + 10 c ENDDO 3251 FORMAT( 2F10.4 ) ELSE WRITE(IOUT) (XOBS(J), YOBS(J), J = 1, NDPTS ) ENDIF GOTO 3999 3300 IF ( KPLMRK(I) .NE. MARKER ) GOTO 3400 IF ( FORMATTED ) THEN READ(IINP, 3301) ( XOBS(J), YOBS(J), TWOTHT(J), 1 DSPACE(J), IWAVE(J), J = 1, NDPTS ) 3301 FORMAT( 4F10.4,I6 ) ELSE READ(IINP) ( XOBS(J), YOBS(J), TWOTHT(J), DSPACE(J), 1 IWAVE(J), J = 1, NDPTS ) ENDIF WRITE(IOUT,*,ERR=666) NDPTS !Make sure we have a count IF ( FORMATTED ) THEN WRITE(IOUT, 3351) (XOBS(J), YOBS(J), J = 1, NDPTS ) 3351 FORMAT( 2F10.4 ) ELSE WRITE(IOUT) (XOBS(J), YOBS(J), J = 1, NDPTS ) ENDIF GOTO 3999 3400 IF ( KPLMRK(I) .NE. ERRORY ) GOTO 3500 PRINT *, 'Y error bars' C GOTO 3999 3500 IF ( KPLMRK(I) .NE. ERRORX ) GOTO 3600 PRINT *, 'X Error bars' GOTO 3999 3600 IF ( FORMATTED ) THEN PRINT *, 'Unknown data record type, Ignoring' READ(IINP, 3601) DUMMY 3601 FORMAT( A1 ) ELSE READ(IINP) DUMMY ENDIF 3999 ENDDO ! I = 1, NDGRPS C C Open the parameter file C CALL NAMEXT( FILOUT, FILPAR, 'PAR' ) CLOSE( UNIT=13 ) OPEN( UNIT=13, FILE=FILPAR, STATUS='NEW', 1 CARRIAGECONTROL='LIST', FORM='FORMATTED', ERR=666 ) C 6001 FORMAT('% This GRAFIT parameter file was generated by VAXCONV' ) 6002 FORMAT('TITL=',A80 ) 6003 FORMAT('XLB1=TWO-THETA (DEGREES)' ) 6004 FORMAT('YLB1=INTENSITY (CPS)') 6005 FORMAT('XLB1=' ) 6006 FORMAT('YLB1=' ) 6007 FORMAT('OVER= 2 1 0 1 1 1 0.500 0.500 2.250 1 2.250 0.000 0.000 1.000 1.000' ) 6008 FORMAT('XAX1= 1 5 1 0 11 6.000 0.000 0.000', 1' 0.000', 3F10.5 ) 6009 FORMAT('YAX1= 1 4 1 0 11 4.000 0.000 0.000', 1' 0.000', 3F10.5 ) 6010 FORMAT('XAX2= 1 1 1 0 11 6.000 0.000 0.000 0.000 1 0.00000 0.0000 0.00000') 6011 FORMAT('YAX2= 1 1 1 0 11 4.000 0.000 0.000 0.000 1 0.00000 0.0000 0.00000') 6012 FORMAT('IDEN= ' ) 6013 FORMAT( 'SETS=',I3,' 0 0 ',I3,' 1 1 0 0.0 0.0', 1 F10.4,' 0.0000') 6014 FORMAT('LABL=',A20) C C WRITE(13,6001,ERR=666) WRITE(13,6002,ERR=666) QPPTTL WRITE(13,6003,ERR=666) WRITE(13,6004,ERR=666) WRITE(13,6005,ERR=666) WRITE(13,6006,ERR=666) WRITE(13,6007,ERR=666) WRITE(13,6008,ERR=666) PPLXST, PPLXEN, (PPLXEN - PPLXST) / 5 WRITE(13,6009,ERR=666) PPLYST, PPLYEN, (PPLYEN - PPLXST) / 4 WRITE(13,6010,ERR=666) WRITE(13,6011,ERR=666) WRITE(13,6012,ERR=666) DO I = 1, NDGRPS WRITE( 13, 6013) KPLPEN(I), ABS(KPLCOD(I)), PPLOFF(I) WRITE( 13, 6014) QPLTTL(I) ENDDO CLOSE( UNIT = 13 ) GOTO 999 !Exit gracefully C C 555 IF( NSET.GT.0 ) GOTO 999 777 IERR = 1 GOTO 999 666 IERR = -1 GOTO 999 888 IERR = 2 GOTO 999 999 CLOSE( UNIT=13 ) RETURN END $EODBHTCOPY** $ copy/log sys$input Z.COM;14 $deck/dollars=$EODBHTCOPY** $ set def POWD:[PUBLIC.SOURCE.VAXCONV.SUBS] $ FORT CLEARS.FOR $ FORT CODDAT.FOR $ FORT CODTIM.FOR $ FORT COLORS.FOR $ FORT COMMAS.FOR $ FORT CURSOR.FOR $ FORT DATCOD.FOR $ FORT DATUNK.FOR $ FORT DEFEXT.FOR $ FORT DIADIF.FOR $ FORT DIARAW.FOR $ FORT GRADAT.FOR $ FORT GRAHKL.FOR $ FORT HEADER.FOR $ FORT INICOM.FOR $ FORT LAMDAP.FOR $ FORT LDIGIT.FOR $ FORT LPRINT.FOR $ FORT MARGIN.FOR $ FORT NALPHA.FOR $ FORT NAMEXT.FOR $ FORT NBLANK.FOR $ FORT NOTWRN.FOR $ FORT PAUSES.FOR $ FORT PUTEXT.FOR $ FORT PUTFFL.FOR $ FORT PUTGFL.FOR $ FORT PUTIFL.FOR $ FORT RDI011.FOR $ FORT RDI05A.FOR $ FORT RDI05S.FOR $ FORT RDI500.FOR $ FORT RDIAID.FOR $ FORT RDIKEY.FOR $ FORT RDIMDI.FOR $ FORT RDINIC.FOR $ FORT RDIRIG.FOR $ FORT RDISAS.FOR ! added 3/6/92 BHT $ FORT RDISPP.FOR $ FORT RDITAG.FOR $ FORT RDIUNK.FOR $ FORT RLSNBS.FOR $ FORT RLSUNK.FOR $ FORT RLSXRR.FOR $ FORT RPLNBS.FOR $ FORT RPLSHA.FOR $ FORT RPLUNK.FOR $ FORT RPLXRR.FOR $ FORT RRW011.FOR $ FORT RRW05A.FOR $ FORT RRW05S.FOR $ FORT RRW500.FOR $ FORT RRW5000.FOR !added 9/20/90 ABM $ FORT RRWMDI.FOR $ FORT RRWNBS.FOR $ FORT RRWNIC.FOR $ fort rrwnsy.for $ FORT RRWPDF.FOR $ FORT RRWRIG.FOR $ FORT RRWRIO.FOR $ FORT RRWSAS.FOR $ FORT RRWSHA.FOR $ FORT RRWSPP.FOR $ FORT RRWTAG.FOR $ FORT RRWUNK.FOR $ FORT RRWX3.FOR $ FORT RRWX7.FOR $ FORT RRWXRR.FOR $ FORT SCREEN.FOR $ FORT SHOWPN.FOR $ FORT SHOWPS.FOR $ FORT SPAWNS.FOR $ FORT TIMCOD.FOR $ FORT WDI011.FOR $ FORT WDI05A.FOR $ FORT WDI05S.FOR $ FORT WDI500.FOR $ FORT WDIAID.FOR $ FORT WDIKEY.FOR $ FORT WDIMDI.FOR $ FORT WDINIC.FOR $ FORT WDIRIG.FOR $ FORT WDISPP.FOR $ FORT WDITAG.FOR $ FORT WDIUNK.FOR $ FORT WRW011.FOR $ FORT WRW05A.FOR $ FORT WRW05S.FOR $ FORT WRW500.FOR $ FORT WRW5000.FOR !added 9/20/90 ABM $ FORT WRWMDI.FOR $ FORT WRWNBS.FOR $ FORT WRWNIC.FOR $ fort wrwnsy.for $ FORT WRWPDF.FOR $ FORT WRWRIG.FOR $ FORT WRWRIO.FOR $ FORT WRWSAS.FOR $ FORT WRWSHA.FOR $ FORT WRWSPP.FOR $ FORT WRWTAG.FOR $ FORT WRWUNK.FOR $ FORT WRWX3.FOR $ FORT WRWX7.FOR $ FORT WRWXRR.FOR $EODBHTCOPY**