___________________________________________________________________
 |                                                                 |
 |                      INFN INTERPOLATION EXAMPLE                 |
 |_________________________________________________________________|

 This example is from Guide VI (PREDPP), Figure 37.

  C INFN ROUTINE FOR COMPUTING LINEARLY INTERPOLATED VALUES
  C OF AN INDEPENDENT VARIABLE.    ILUSTRATES USE OF ROUTINE PASS.
  C ASSUMES THERE ARE ALWAYS AT LEAST TWO MEASURED VALUES PER INDIV. REC.
  C DATREC(3)=TIME DATA ITEM
  C DATREC(4)=INDEPENDENT VARIABLE DATA ITEM
  C DATREC(5)=MISSING INDEPENDENT VARIABLE DATA ITEM
  C   =0 INDEP VAR NOT MISSING
  C   =1 IF FIRST DATA RECORD OF INDIVIDUAL RECORD IS MISSING INDEP VAR
  C   =3 IF LAST  DATA RECORD OF INDIVIDUAL RECORD IS MISSING INDEP VAR
  C   =2 OTHERWISE
  C
        SUBROUTINE INFN (ICALL,THETA,DATREC,INDXS,NEWIND)
        DIMENSION THETA(*),DATREC(*),INDXS(*)
        DOUBLE PRECISION THETA
        DIMENSION U(1000),V(1000)
        IF (ICALL.EQ.3) RETURN
        I=0
  C INITIALIZE PASS
        MODE=0
        CALL PASS (MODE)
        MODE=2
  C PASS THROUGH DATA
      5 CALL PASS (MODE)
        IF (MODE.EQ.0) GO TO 10
  C IF INDEP VAR IS PRESENT, STORE TIME AND VALUE
        IF (DATREC(5).EQ.0.) THEN
           I=I+1
           U(I)=DATREC(3)
           V(I)=DATREC(4)
        ENDIF
        GO TO 5
     10 I=0
  C INITIALIZE PASS A SECOND TIME
        MODE=0
        CALL PASS (MODE)
        MODE=2
  C PASS THROUGH DATA A SECOND TIME
     15 CALL PASS (MODE)
        IF (MODE.EQ.0) RETURN
  C IF INDEP VAR IS MISSING, STORE INTERPOLATED VALUE
        IF (DATREC(5).EQ.0.) THEN
           I=I+1
        ELSE
           IF (DATREC(5).EQ.1) THEN
              K=I+1
              L=I+2
           ELSEIF (DATREC(5).EQ.2.) THEN

              K=I
              L=I+1
           ELSEIF (DATREC(5).EQ.3.) THEN
              K=I-1
              L=I
           ENDIF
           A=(U(K)*V(L)+U(L)*V(K))/(U(K)-U(L))
           B=(V(K)-V(L))/(U(K)-U(L))
           DATREC(4)=A+B*DATREC(3)
        ENDIF
        GO TO 15
        END

REFERENCES: Guide VI Section VI.A, Figure 37

  
Go to main index.
  
Created by nmhelp2html v. 1.0 written by Niclas Jonsson (Modified by AJB 5/2006,11/2007)