+--------------------------------------------------------------------+
 |                                                                    |
 |                        REPETITION_2 EXAMPLE                        |
 |                                                                    |
 +--------------------------------------------------------------------+

 This  example  illustrates  the  use of the repetition feature, and in
 particular, the use of the PRED output control flag PRDFL.  For a dis-
 cussion  of  the reserved variables RPTO, RPTI and PRDFL: (See Repeti-
 tion Variables).

 This example computes a variable RS to be output in a  table,  defined
 as  the  difference between the observation in the data record and the
 average observation in the  individual  record.   User-defined  tabled
 quantities  are  computed during a copying pass through the data set -
 signaled by COMACT=1 (See comact).  In this example, during the  copy-
 ing  pass,  the  data  records  in each individual record are actually
 passed twice; the average is computed during a first pass through  the
 individual record - signaled by RPTI=0, and the difference is computed
 during a second (repeated) pass - signaled by RPTO=1.

       $PRED
       Y=...
       IF (COMACT.EQ.0) PRDFL=1
       IF (ICALL.EQ.0) THEN
          RPTO=1      ;initiates use of repetition feature
          PRDFL=1     ;initiates use of the PRED output control flag
          N=0
          AV=0
       ENDIF
       IF (COMACT.EQ.1) THEN
          IF (RPTI.EQ.0.AND.NEWIND.LE.1) THEN
             N=0
             AV=0
          ENDIF
          IF (RPTI.EQ.0.AND.MDV.EQ.0) THEN
             N=N+1
             AV=AV+DV
          ENDIF
          IF (RPTI.EQ.1) THEN
             RS=0
             PRDFL=1
          ENDIF
          IF (RPTI.EQ.1.AND.MDV.EQ.0) RS=DV-AV
          IF (NDREC.EQ.LIREC) THEN
             RPTO=-1         ;RPTO=-1 is a signal initiating
                             ;a second pass. As RPTON isn't also set,
                             ;there are no further passes.
             AV=AV/N
          ENDIF
       ENDIF

 $TABLE RS NOAPPEND

 The variable NDREC contains the  index  of  the  current  data  record
 within  the current individual record, and LIREC contains the index of
 the  last  data  record  within   the   current   individual   record.
 (See Record Counters: NIREC,NDREC)
 (See Size of Individual Record).
 If  a  data  record does not contain an observation (i.e. MDV=1), this
 code sets RS to 0.

 If a variable is to be used only during a  copying  pass,  but  recur-
 sively  across  data  records  (such  as  N and AV), then it should be
 defined in an initialization  block  (e.g.  at  ICALL.EQ.0).   Setting
 PRDFL=1  during  a  noncopying  pass, assures that during such passes,
 PRED output will be accepted in the usual way:  data  record  by  data
 record.  Setting PRDFL=1 during a copying pass, but only with the sec-
 ond pass through the data records, assures  that  PRED  output  (which
 includes the RS variable) will be accepted data record by data record,
 but only during the repeated pass.

 REFERENCES: none.


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