PROGRAM LGFOR
********************************************
****** 12-31-90
********************************************
      IMPLICIT REAL*8(A-G,O-R,T-Z)
      IMPLICIT INTEGER(H-N)
      INTEGER X(100),IORDER(100)
      CHARACTER IFMT(1)*127,TITLE(1)*127,IFT(1)*127,OUTFMT(1)*127,
    &          ITMNAM(100)*8,KEYWRD*10,YESNO*10,NOYES*10,SSFILE*20
      REAL*8 N
      WRITE(*,'(A/A/A,A\)')' What is the input specification file?',
    &'  INPUT                          = 1',
    &'  or Specify different file name = 2',
    &'                            '
      READ(*,*)INKEY
      IF (INKEY .EQ. 1)THEN
        SSFILE='INPUT'
      ELSE
      WRITE(*,'(A/A\)')' Input specification file is:  ',
    &'  ===> '
      READ(*,'(A)')SSFILE
      ENDIF
      WRITE (*,'(A\)') ' File "'
      WRITE (*,'(A\)')SSFILE
      WRITE (*,'(A)') ' " will be used as the input specification file.'
      OPEN (1,FILE=SSFILE,STATUS='OLD')
      OPEN (2,FILE='LG.OUT',STATUS='NEW')
      WRITE(*,'(A/A)')'  ',
    &'  '
      WRITE(*,'(A/A/A,A\)')' What is the raw data input file?',
    &'  RAW                            = 1',
    &'  or Specify different file name = 2',
    &'                            '
      READ(*,*)INKEY
      IF (INKEY .EQ. 1)THEN
        SSFILE='RAW'
      ELSE
      WRITE(*,'(A/A\)')' Raw data input file is:  ',
    &'  ===> '
      READ(*,'(A)')SSFILE
      ENDIF
      WRITE (*,'(A\)') ' ..... File "'
      WRITE (*,'(A\)')SSFILE
      WRITE (*,'(A)') ' " is being input as the raw data file.'
      OPEN (4,FILE=SSFILE,STATUS='OLD')
  50 READ (1,'(A10)',END=65)KEYWRD
  65 IF  (KEYWRD .EQ. 'TITLE')  THEN
      READ (1,'(A127)')TITLE
      WRITE(2,'(A127)')TITLE
      GOTO 50
      ELSE IF  (KEYWRD .EQ. 'NCASES')  THEN
        READ (1,'(I4)')NCASES
        GOTO 50
      ELSE IF (KEYWRD .EQ. 'WAVES')THEN
        READ (1,'(I4)')NWAVES
        GOTO 50
      ELSE IF (KEYWRD .EQ. 'SELECT')THEN
        IYES=1
        READ (1,'(I1)')IFNUM
        GOTO 50
  70  ELSE IF (KEYWRD .EQ. 'HOWREAD') THEN
        READ (1,'(A127)',END=100)IFMT(1)
        IF (IYES .EQ. 0) IFMT(2)=IFMT(1)
        GOTO 50
  100  ELSE IF (KEYWRD .EQ. 'ITEMS')THEN
        READ (1,'(I4)')NVARS
  110  DO 120 I=1,NVARS
        READ (1,*,END=175)ITMNAM(I),IORDER(I)
  120  ICOUNT=ICOUNT+1
        DO 150 I=1,ICOUNT
        IF (ITMNAM(I) .EQ. ' ')GO TO 175
  150  CONTINUE
  175  II=I-1
        GOTO 50
      ELSE IF (KEYWRD .EQ. 'LCSMAX') THEN
        READ (1,'(A10)')YESNO
        GOTO 50
      ELSE IF (KEYWRD .EQ. 'FREQUENCY') THEN
        READ (1,'(A10)')NOYES
        GOTO 50
      ELSE IF (KEYWRD .EQ. 'END') THEN
        GOTO 185
      ENDIF
185    IF (YESNO .EQ. 'YES') ION=1
        IF (YESNO .EQ. 'yes') ION=1
        IF (YESNO .EQ. 'Yes') ION=1
        IF (NOYES .EQ. 'YES') IION=1
        IF (NOYES .EQ. 'yes') IION=1
        IF (NOYES .EQ. 'Yes') IION=1
        WRITE(2,'(I1)')ION
        WRITE(2,'(I1)')IION
        WRITE(2,'(I4)')NVARS/NWAVES
      CLOSE(1)
  186 IF (IYES .EQ. 1)GOTO 200
  188  READ (4,IFMT(1))(X(I),I=1,NVARS)
      III=III+1
      WRITE (*,'(A)')
    & '    NREAL      NCASES      III '
      WRITE (*,'(I8,3X,I8,3X,I8)')
    & NREAL,NCASES,III
  189 DO 190 I=1,NVARS
  190  IF (X(I) .NE. 0 .AND. X(I) .NE. 1)GOTO 198
  191 DO 192 I=1,NVARS
  192 WRITE(2,'(I1\)') X(IORDER(I))
      WRITE(2,'(A)')
    & ' '
      NREAL=NREAL+1
  198  IF (X(I) .EQ. 0 .OR. X(I) .EQ. 1)GOTO 199
      WRITE (*,'(A)')
    & '    X(I)      NCASES      III '
      WRITE (*,'(I8,3X,I8,3X,I8)')
    & X(I),NCASES,III
  199 IF (III.LT.NCASES)GOTO 188
      GOTO 500
  200  READ (4,IFMT(1))(X(I),I=1,NVARS+1)
      III=III+1
      IF (X(1) .EQ. IFNUM)GOTO 220
  210 IF (III.LT.NCASES)GOTO 200
      GOTO 500
  220 DO 222 I=2,NVARS+1
  222  IF (X(I) .NE. 0 .AND. X(I) .NE. 1)GOTO 210
  290 DO 292 I=1,NVARS
  292 WRITE(2,'(I1\)') X(IORDER(I)+1)
      WRITE(2,'(A)')
    & ' '
      NREAL=NREAL+1
      IF (III.LT.NCASES)GOTO 200
  500  WRITE(2,'(A)')
    & '-'
  510  DO 520 I=1,NVARS
      WRITE(2,*) ITMNAM(IORDER(I))
  520  CONTINUE
  600 END