C HEEF - One minute average sorted by local pitch angle C Input file = 'd04XXXX.min' ; Output file = 'd04XXXX.lis'' C XXXX = CRRES Orbit Number (0015 - 1067) c Modified to run on non-SGI UNIX platform by J. F. Cooper c 09/12/2002: This version of protel_min1.for has been modified to run c on a Windows PC. This will also run on a non-SGI UNIX c platform if the OPEN statement is changed as indicated c below. / J. F. Cooper PROGRAM READ_MIN REAL*4 EPHEMA(8),EPHEMB(8),FLUX(19,19),ENERGY(19) INTEGER*2 NOBF(19,19),IDUM INTEGER*4 IORBIT,IYEAR,IDAY,IBSEC,IESEC,IBR,IER CHARACTER*11 INFILE,OUTFILE DATA inFILE/'d04XXXX.min'/ PRINT*,'ENTER ORBIT NUMBER:' READ(*,*)JORBIT PRINT*,'ENTER CHANNEL NUMBER:(1-19)' READ(*,*)ICH WRITE(INFILE(4:7),'(I4.4)')JORBIT WRITE(6,*) INFILE OUTFILE=INFILE(1:8)//'lis' WRITE(6,*) OUTFILE c Use this OPEN statement to run code on Windows PC platform OPEN(1,FILE=INFILE,ACCESS='DIRECT',RECL=2232,ERR=100) c Use this OPEN statement to run code on non-SGI UNIX platform c OPEN(1,FILE=INFILE,ACCESS='DIRECT',RECL=558, c * CONVERT='BIG_ENDIAN',ERR=100,STATUS='OLD') c Use this OPEN statement to run code on SGI UNIX platform c OPEN(1,FILE=INFILE,ACCESS='DIRECT',RECL=558,ERR=100, c * STATUS='OLD') c WRITE(6,*) ' OPENED INPUT FILE' OPEN(2,FILE=OUTFILE,STATUS='UNKNOWN') WRITE(6,*) ' OPENED OUTPUT FILE ' C READ HEADER RECORD READ(1,REC=1)IORBIT,IYEAR,IDAY,IBSEC,IESEC,IBR,IER,ENERGY C REVERSE BINARY BYTE ORDER FOR NON-SGI UNIX and Windows PC PLATFORMS C Comment out the following statements for UNIX platforms CALL BYTIN4(IORBIT) CALL BYTIN4(IYEAR) CALL BYTIN4(IDAY) CALL BYTIN4(IBSEC) CALL BYTIN4(IESEC) CALL BYTIN4(IBR) CALL BYTIN4(IER) DO I=1,19 CALL BYTFL4(ENERGY(I)) ENDDO WRITE(2,21) IYEAR,IDAY,ENERGY(ICH) 21 FORMAT(' YEAR=',I4,' DAY=',I4,' ENERGY=',F5.2,' MEV') WRITE(2,22)IORBIT,IBSEC,IESEC,IER 22 FORMAT(' ORBIT=',I4,' BSEC=',I6,' ESEC=',I6,' NO. RECORDS=', + I4) C READ DATA RECORDS DO 10 NREC=ibr,ier WRITE(2,*) READ(1,REC=NREC,ERR=100)EPHEMB,EPHEMA,FLUX,NOBF,IDUM C Comment out the following statements for SGI UNIX platforms DO II=1,8 CALL BYTFL4(EPHEMB(II)) CALL BYTFL4(EPHEMA(II)) ENDDO DO IICH=1,19 DO IPA=1,19 CALL BYTFL4(FLUX(IICH,IPA)) CALL BYTIN2(NOBF(IICH,IPA)) ENDDO ENDDO WRITE(2,23)EPHEMB 23 FORMAT(' BEG EPHEM. ',4F9.1,4F8.3) write(2,24)EPHEMA 24 FORMAT(' AVE EPHEM. ',4F9.1,4F8.3) WRITE(2,25) 25 FORMAT(/,' Pitch Angle Flux Obs') DO 20 IPA=1,19 WRITE(2,26)IPA*5-5,FLUX(ICH,IPA),NOBF(ICH,IPA) 20 CONTINUE 26 FORMAT(I8,4X,E10.4,i8) 10 CONTINUE 100 CONTINUE STOP END C SUBROUTINE BYTIN4(A) C Reverse byte order for INTEGER*4 INTEGER*4 A,IX,IY BYTE FBYTEI(4),RBYTEI(4) EQUIVALENCE (IX,FBYTEI(1)),(IY,RBYTEI(1)) IX = A DO I = 1,4 J = 5 - I RBYTEI(J) = FBYTEI(I) ENDDO A = IY RETURN END c SUBROUTINE BYTIN2(A) C Reverse byte order for INTEGER*2 INTEGER*2 A,IX,IY BYTE FBYTEI(2),RBYTEI(2) EQUIVALENCE (IX,FBYTEI(1)),(IY,RBYTEI(1)) IX = A DO I = 1,2 J = 3 - I RBYTEI(J) = FBYTEI(I) ENDDO A = IY RETURN END c SUBROUTINE BYTFL4(A) C Reverse byte order for REAL*4 REAL*4 A,X,Y BYTE FBYTEF(4),RBYTEF(4) EQUIVALENCE (X,FBYTEF(1)),(Y,RBYTEF(1)) X = A DO I = 1,4 J = 5 - I RBYTEF(J) = FBYTEF(I) ENDDO A = Y RETURN END