C     CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C     C                                                                C
C     C  INVERSION OF SATELLITE H'(F) DATA TO N(H) PROFILES.           C
C     C   DEPOSITED IN NATIONAL SPACE SCIENCES DATA CENTER 1973.       C
C     C  METHODS USED DISCUSSED IN FOLLOWING REPORTS:                  C
C     C       J.E. JACKSON, THE ANALYSIS OF TOPSIDE IONOGRAMS,         C
C     C            SEPT 1967, GSFC REPT X-615-67-452.                  C
C     C       J.E. JACKSON, THE REDUCTION OF TOPSIDE IONOGRAMS TO      C
C     C            ELECTRON DENSITY PROFILES, JUNE 1969, PROC. IEEE.   C
C     C       J.E. JACKSON, THE P'(F) TO N(H) INVERSION PROBLEM IN     C
C     C            IONOSPHERIC SOUNDINGS, MAY 1971, GSFC REPT          C
C     C            X-625-71-186.                                       C
C     C       J.E. JACKSON AND C.J. MCQUILLAN, ANALYSIS OF TOPSIDE     C
C     C            IONOGRAMS WITH ALLOWANCE FOR SATELLITE MOTION AND   C
C     C            UNKNOWN FXS,      1973, GSFC REPT X-625-73-   .     C
C     C                                                                C
C     CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C
      IMPLICIT REAL*8(A-H,O-Y)
      REAL*4 DLAT,DLONG,DATE,HT
      COMPLEX*16 TITX,TITY,TYPE
      LOGICAL*1 TITL(80)
      COMMON /SWJTCH/ ISAT,LOCSAT,IFXS,NCASES,ICODE(4),N,METHOD,IORD,IP
      COMMON /CNT/ZA(2500,3),ZXCO(50),LA,LXCO,ZA2(80,3),LA2
      COMMON /MID/XMID,YMID
C
C  REWIND THE TEMPORARY SAVE DATA FILE (UNIT 9)=LIB.DATA(SAVEIT)
C
C     REWIND 9
      OPEN(UNIT=6,NAME='NHOUTPUT.DAT',TYPE='NEW',FORM='FORMATTED')
      OPEN(UNIT=4,NAME='Ne1.DAT',TYPE='OLD',FORM='FORMATTED')
      OPEN(UNIT=3,NAME='NHINPUT.DAT',TYPE='OLD',FORM='FORMATTED',
     1    READONLY)
      LA=0
      LA2=0
      LXCO=0
C READ PLOT AND CONTOUR CHARACTERISTICS FROM UNIT 4. CALCULATE CENTER
C AND SCALING FACTOR(ZY AND ZX3) FOR POLAR CONTOURS.
      CALL READ4(ISP,IX,IY,ISVE,ISH,ITYP,ZHMAX,ZX3,ZY,TITX,TITY,TYPE,
     1 TITL,ZSANG,ZEANG,LBL,IHDR,IHEM)
C     READ TITLE FOR ENTIRE JOB AND IDENTIFICATION, PROCESSING SWITCHES
C     (ICODE, SEE BELOW), AND H'(F) DATA FOR ONE IONOGRAM AT A TIME.
C     DETERMINE INITIAL SATELLITE POSITION BY INTERPOLATING WORLD MAP
C     DATA IF REQUESTED. WRITE OUT INPUT DATA. DETERMINE NCASES, THE NO.
C     OF DIFFERENT WAYS IN WHICH THE IONOGRAM IS TO BE PROCESSED. RETURN
C     TO STATEMENT 300 IF AN END-OF-FILE IS READ.
  100 CALL READ(DLAT,DLONG,DATE,HT,LQ,&300)
      DO 200 ICT=1,NCASES
      J=ICODE(ICT)
C     ICODE(ICT) DETERMINES PROCEDURE TO BE USED FOR THIS ANALYSIS OF
C     THIS IONOGRAM, AS FOLLOWS:
C        1 = FIXED SATELLITE POSITION AND KNOWN FXS;
C        2 = FIXED SATELLITE POSITION AND UNKNOWN FXS;
C        3 = VARIABLE SATELLITE POSITION AND KNOWN FXS;
C        4 = VARIABLE SATELLITE POSITION AND UNKNOWN FXS.
      IF (ICT .NE. 1) CALL PRINT(J)
      LOCSAT=0
      IFXS=0
      IF (J .EQ. 2 .OR. J .EQ. 4) IFXS=1
      IF (J .EQ. 3 .OR. J .EQ. 4) LOCSAT=1
C     ANALYZE IONOGRAM ACCORDING TO REQUIRED  CONDITIONS: DETERMINE FXS
C     IF UNKNOWN (IFXS=1); ALLOW SATELLITE POSITION TO VARY IF REQUESTED
C     (LOCSAT=1). LAMINATION PROCEDURE FOR INVERSION OF H'(F) DATA TO
C     N(H) DATA IS CONTAINED IN SUBROUTINE XLAM. RETURN TO STATEMENT 100
C     IF PROBLEMS ARE ENCOUNTERED IN COMPUTING FXS.
      CALL INVERT(DLAT,DLONG,DATE,HT,LQ,&100)
C     COMPUTE ORDINARY TRACE VIRTUAL HEIGHTS FROM N(H) PROFILE DERIVED
C     FROM EXTRAORDINARY TRACE H'(F) DATA, IF REQUESTED (IORD=1). IF
C     PROBLEMS ARISE IN THIS COMPUTATION, DELETE IT FROM THE OUTPUT.
      IF(IORD.EQ.1) CALL OTRACE(DLAT,DLONG,DATE,LQ)
C     INTERPOLATE RESULTANT N(H) DATA TO OBTAIN FINAL OUTPUT: HEIGHTS
C     AT FIXED DENSITIES AND DENSITIES AT FIXED HEIGHTS.  RETURN TO
C     STATEMENT 100 IF PROBLEMS ARISE IN INTERPOLATION (I.E.TERMINATE
C     PROCESSING OF THIS IONOGRAM).
      CALL INTERP(&100)
C IF REQUESTED, PLOT IONOGRAM INFO AND ELECTRON DENSITY VS. ALTITUDE.
C CALCULATE AND SAVE VALUES FOR CONTOURING.
      IF(IP.NE.0) CALL PLOT1(IHDR,TITL,ISP,ZHMAX,ISVE,ITYP,IX,IY,DLAT,DL
     1ONG)
C CALCULATE FIELD LINES FOR DRAWING ON CONTOURS.
      CALL FLINE(DLAT,DLONG,DATE,HT,LQ,ZXCO,LXCO,IX,IHEM)
  200 CONTINUE
      GO TO 100
C DRAW CONTOURS(FLAT OR CURVED EARTH OR BOTH),WITH X-AXIS LATITUDE,LONG,
C MINUTES OR SECONDS, Y-AXIS ALTITUDE OR DISTANCE FROM SATELLITE. VALUES
C MAY BE ELECTRON DENSITY,FN,FN/FH,FX,FZ,OR FT. FIELD LINES, SATELLITE
C AND F-PEAK POINTS ARE OPTIONAL,AS ARE HEADERS. NOT ALL OPTIONS ARE
C COMPATIBLE.
c  300 CONTINUE
 300  IF(IP.EQ.1) CALL CONT(ZA,LA,ZA2,LA2,ISP,ZX3,ZY,IHDR,TITX,TITY,TYPE
     1 ,TITL,ISH,ZXCO,LXCO,ZHMAX,ZSANG,ZEANG,LBL,IX,IY)
      STOP
      END