WVRPSCR1 ;HCIOFO/FT,JR-Display Compliance Rates (cont.) ;6/17/99  11:47
 ;;1.0;WOMEN'S HEALTH;**3,7**;Sep 30, 1998
 ;;  Original routine created by IHS/ANMC/MWR
 ;;* MICHAEL REMILLARD, DDS * ALASKA NATIVE MEDICAL CENTER *
 ;;  THIS REPORT WILL DISPLAY COMPLIANCE RATES FOR PAPS & MAMS.
 ;;  ENTRY POINTS CALLED BY WVRPSCR.
DATA ;EP
 ;---> SORT AND STORE ARRAY IN ^TMP("WV",$J
 K WVTMP,^TMP("WV",$J),^TMP("WVP",$J),WVPR
 ;---> WVBEGDT1=ONE SECOND BEFORE BEGIN DATE.
 ;---> WVENDDT1=THE LAST SECOND OF END DATE.
 F WVCNT=20,30,40,50,60,70,200 S WVAGRG(WVCNT)=""
 S WVBEGDT1=WVBEGDT-.0001,WVENDDT1=WVENDDT+.9999
 ;
 S WVDATE=WVBEGDT1,WVTOT=$$ACTIVE^WVRPSCR2(WVBEGDT,WVENDDT1,WVAGRG)
 F  S WVDATE=$O(^WV(790.1,"D",WVDATE)) Q:'WVDATE!(WVDATE>WVENDDT1)  D
 .S WVIEN=0
 .F  S WVIEN=$O(^WV(790.1,"D",WVDATE,WVIEN)) Q:'WVIEN  D
 ..S Y=^WV(790.1,WVIEN,0)
 ..S WVDFN=$P(Y,U,2),WVPCDN=$P(Y,U,4),WVRES=$P(Y,U,5)
 ..;
 ..;---> QUIT IF THIS PROCEDURE HAS A RESULT OF "ERROR/DISREGARD".
 ..Q:WVRES=8
 ..;
 ..;---> QUIT IF NEITHER A PAP (IEN=1) NOR A SCREENING MAM (IEN=28).
 ..Q:((WVPCDN'=1)&(WVPCDN'=28))
 ..;
 ..;---> QUIT IS PATIENT IS NOT WITHIN AGE RANGE.
 ..S WVAGE=+$$AGE^WVUTL9(WVDFN)
 ..I WVAGRG'=1 Q:((WVAGE<$P(WVAGRG,"-"))!(WVAGE>$P(WVAGRG,"-",2)))
 ..;
 ..;---> GET VALUE OF RESULT: 0=NORMAL, 1=ABNORMAL, 2=NO RESULT
 ..S WVNORM=$$NORMAL^WVUTL4(WVRES) S:WVNORM=2 WVNORM=0
 ..;
 ..S ^TMP("WV",$J,WVDFN,WVNORM,WVPCDN,WVIEN)=""
 ..I WVPCDN=1 D
 ...S WVJPAPR=$P($G(^WV(790,WVDFN,0)),U,16)
 ...I WVJPAPR'>0 S WVJPAPR="NOT SPECIFIED"
 ...E  S WVJPAPR=$P($G(^WV(790.03,WVJPAPR,0)),U)
 ...S ^TMP("WVP",$J,WVJPAPR,WVDFN,WVNORM,WVPCDN,WVIEN)=""
 ..I WVPCDN=28 D
 ...S WVJ=$O(WVAGRG(WVAGE))
 ...S WVJAGER=$S(WVJ=20:"<20",WVJ=30:"20-29",WVJ=40:"30-39",WVJ=50:"40-49",WVJ=60:"50-59",WVJ=70:"60-69",WVJ=200:">70",1:"AGE UNKNOWN")
 ...S ^TMP("WVP",$J,WVJAGER,WVDFN,WVNORM,WVPCDN,WVIEN)=""
 ;
 ;---> NOW COLLATE DATA FROM ^TMP ARRAY INTO LOCAL WVTMP REPORT ARRAY.
 ;---> FIRST, SEED LOCAL ARRAY WITH ZEROS.
 F M=1,28 D
 .N I F I=1:1:5 S WVTMP("RES",M,I)=0
 ;
 ;---> COLLATE DATA.
 S N=0
 F  S N=$O(^TMP("WV",$J,N)) Q:'N  D
 .F M=1,28 D
 ..Q:$D(^TMP("WV",$J,N,1,M))
 ..S P=0,Q=0
 ..F  S P=$O(^TMP("WV",$J,N,0,M,P)) Q:'P  S Q=Q+1
 ..Q:'Q
 ..I '$D(WVTMP("RES",M,Q)) S WVTMP("RES",M,Q)=1 Q
 ..S WVTMP("RES",M,Q)=WVTMP("RES",M,Q)+1
 ;
 ;---> STORE ALL NODES >5 IN THE 5+ NODE.
 F M=1,28 D
 .S Q=5
 .F  S Q=$O(WVTMP("RES",M,Q)) Q:'Q  D
 ..S WVTMP("RES",M,5)=WVTMP("RES",M,5)+WVTMP("RES",M,Q)
 ..K WVTMP("RES",M,Q)
 ;
 ;---> FIGURE PERCENTAGES OF WOMEN AND STORE IN ARRAY.
 F M=1,28 D
 .F Q=1:1:5 S $P(WVTMP("RES",M,Q),U,2)=$J((+WVTMP("RES",M,Q)/WVTOT),0,2)
 ;
 ;---> BUILD DISPLAY ARRAY.
 N WVNODE K ^TMP("WV",$J)
 ;
 ;---> PAPS SUBHEADER LINE.
 S WVNODE=$$S(40)_"SCREENING PAPS"
 D WRITE(1,WVNODE)
 S WVNODE=$$S(39)_"----------------"
 D WRITE(2,WVNODE)
 S WVNODE=" # of PAPs:                                        1     2     3     4     5+"
 D WRITE(4,WVNODE)
 S WVNODE=" -----------                                     ----- ----- ----- ----- -----"
 D WRITE(5,WVNODE)
 ;
 ;---> PAPS NUMBER OF WOMEN DATA LINE.
 S WVNODE=" # of Women:                                    "
 F Q=1:1:5 S WVNODE=WVNODE_$J($P(WVTMP("RES",1,Q),U),6)
 D WRITE(6,WVNODE)
 S WVNODE=" % of Women:                                    "
 F Q=1:1:5 S WVNODE=WVNODE_$J(($P(WVTMP("RES",1,Q),U,2)*100),5)_"%"
 D WRITE(7,WVNODE)
 ;
 ;---> LINE FEEDS BETWEEN PAPS AND MAMS.
 S WVNODE="" D WRITE(8,WVNODE) S WVNODE="" D WRITE(9,WVNODE)
 ;
 ;---> MAMS SUBHEADER LINE.
 S WVNODE=$$S(40)_"SCREENING MAMS"
 D WRITE(10,WVNODE)
 S WVNODE=$$S(39)_"----------------"
 D WRITE(11,WVNODE)
 S WVNODE=" # of MAMs:                                        1     2     3     4     5+"
 D WRITE(13,WVNODE)
 S WVNODE=" -----------                                     ----- ----- ----- ----- -----"
 D WRITE(14,WVNODE)
 ;
 ;---> PAPS NUMBER OF WOMEN DATA LINE.
 S WVNODE=" # of Women:                                    "
 F Q=1:1:5 S WVNODE=WVNODE_$J($P(WVTMP("RES",28,Q),U),6)
 D WRITE(15,WVNODE)
 S WVNODE=" % of Women:                                    "
 F Q=1:1:5 S WVNODE=WVNODE_$J(($P(WVTMP("RES",28,Q),U,2)*100),5)_"%"
 D WRITE(16,WVNODE)
 Q
 ;
WRITE(I,Y) ;EP
 S ^TMP("WV",$J,I,0)=Y
 Q
 ;
S(S) ;EP
 ;---> SPACES.
 Q $$S^WVUTL7($G(S))
 ;
 ;
AGERNG(WVAGRG,WVPOP) ;EP
 ;---> ASK AGE RANGE.
 ;---> RETURN AGE RANGE IN WVAGRG.
 N DIR,DIRUT,Y S WVPOP=0
 W !!?3,"Do you wish to limit this report to an age range?"
 S DIR(0)="Y",DIR("B")="NO" D HELP1
 S DIR("A")="   Enter Yes or No"
 D ^DIR K DIR W !
 S:$D(DIRUT) WVPOP=1
 ;---> IF NOT DISPLAYING BY AGE RANGE, SET WVAGRG (AGE RANGE)=1, QUIT.
 I 'Y S WVAGRG=1 Q
BYAGE1 ;
 W !?5,"Enter the age range you wish to select in the form of: 40-75"
 W !?5,"Use a dash ""-"" to separate the limits of the range."
 W !?5,"To select only one age, simply enter that age, with no dash."
 W !?5,"(NOTE: Patient ages will reflect the age they are today.)",!
 K DIR
 S DIR(0)="FOA",DIR("A")="     Enter age range: "
 S:$D(^WV(790.72,DUZ,0)) DIR("B")=$P(^(0),U,3)
 D ^DIR K DIR
 I $D(DIRUT) S WVPOP=1 Q
 D CHECK(.Y)
 I Y="" D  G BYAGE1
 .W !!?5,"* INVALID AGE RANGE.  Please begin again."
 ;---> WVAGRG=SELECTED AGE RANGE(S).
 S WVAGRG=Y
 D DIC^WVFMAN(790.72,"L",.Y,"","","","`"_DUZ)
 Q:Y<0
 D DIE^WVFMAN(790.72,".03////"_WVAGRG,+Y,.WVPOP,1)
 Q
 ;
HELP1 ;EP
 ;;Answer "YES" to display screening rates for a specific age range.
 ;;If you choose to display for an age range, you will be given the
 ;;opportunity to select the age range.  For example, you might choose
 ;;to display from ages 50-75.
 ;;Answer "NO" to display screening rates for all ages.
 S WVTAB=5,WVLINL="HELP1" D HELPTX
 Q
 ;
PRINTX ;EP
 N I,T,X S T=$$REPEAT^XLFSTR(" ",WVTAB)
 F I=1:1 S X=$T(@WVLINL+I) Q:X'[";;"  W !,T,$P(X,";;",2)
 Q
 ;
HELPTX ;EP
 ;---> CREATES DIR ARRAY FOR DIR.  REQUIRED VARIABLES: WVTAB,WVLINL.
 N I,T,X S T=$$REPEAT^XLFSTR(" ",WVTAB)
 F I=1:1 S X=$T(@WVLINL+I) Q:X'[";;"  S DIR("?",I)=T_$P(X,";;",2)
 S DIR("?")=DIR("?",I-1) K DIR("?",I-1)
 Q
 ;
CHECK(X) ;EP
 ;---> CHECK SYNTAX OF AGE RANGE STRING.
 ;---> IF X=ONE AGE ONLY, SET IT IN THE FORM X-X AND QUIT.
 I X?1N.N S X=X_"-"_X Q
 ;
 N FAIL,I,Y1,Y2
 S FAIL=0
 ;---> CHECK EACH RANGE.
 S Y1=$P(X,"-"),Y2=$P(X,"-",2)
 ;---> EACH END OF EACH RANGE SHOULD BE A NUMBER.
 I (Y1'?1N.N)!(Y2'?1N.N) S X="" Q
 ;---> THE LOWER NUMBER SHOULD BE FIRST.
 I Y2<Y1 S FAIL=1
 I FAIL S X="" Q
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HWVRPSCR1   6576     printed  Sep 23, 2025@20:24:14                                                                                                                                                                                                    Page 2
WVRPSCR1  ;HCIOFO/FT,JR-Display Compliance Rates (cont.) ;6/17/99  11:47
 +1       ;;1.0;WOMEN'S HEALTH;**3,7**;Sep 30, 1998
 +2       ;;  Original routine created by IHS/ANMC/MWR
 +3       ;;* MICHAEL REMILLARD, DDS * ALASKA NATIVE MEDICAL CENTER *
 +4       ;;  THIS REPORT WILL DISPLAY COMPLIANCE RATES FOR PAPS & MAMS.
 +5       ;;  ENTRY POINTS CALLED BY WVRPSCR.
DATA      ;EP
 +1       ;---> SORT AND STORE ARRAY IN ^TMP("WV",$J
 +2        KILL WVTMP,^TMP("WV",$JOB),^TMP("WVP",$JOB),WVPR
 +3       ;---> WVBEGDT1=ONE SECOND BEFORE BEGIN DATE.
 +4       ;---> WVENDDT1=THE LAST SECOND OF END DATE.
 +5        FOR WVCNT=20,30,40,50,60,70,200
               SET WVAGRG(WVCNT)=""
 +6        SET WVBEGDT1=WVBEGDT-.0001
           SET WVENDDT1=WVENDDT+.9999
 +7       ;
 +8        SET WVDATE=WVBEGDT1
           SET WVTOT=$$ACTIVE^WVRPSCR2(WVBEGDT,WVENDDT1,WVAGRG)
 +9        FOR 
               SET WVDATE=$ORDER(^WV(790.1,"D",WVDATE))
               if 'WVDATE!(WVDATE>WVENDDT1)
                   QUIT 
               Begin DoDot:1
 +10               SET WVIEN=0
 +11               FOR 
                       SET WVIEN=$ORDER(^WV(790.1,"D",WVDATE,WVIEN))
                       if 'WVIEN
                           QUIT 
                       Begin DoDot:2
 +12                       SET Y=^WV(790.1,WVIEN,0)
 +13                       SET WVDFN=$PIECE(Y,U,2)
                           SET WVPCDN=$PIECE(Y,U,4)
                           SET WVRES=$PIECE(Y,U,5)
 +14      ;
 +15      ;---> QUIT IF THIS PROCEDURE HAS A RESULT OF "ERROR/DISREGARD".
 +16                       if WVRES=8
                               QUIT 
 +17      ;
 +18      ;---> QUIT IF NEITHER A PAP (IEN=1) NOR A SCREENING MAM (IEN=28).
 +19                       if ((WVPCDN'=1)&(WVPCDN'=28))
                               QUIT 
 +20      ;
 +21      ;---> QUIT IS PATIENT IS NOT WITHIN AGE RANGE.
 +22                       SET WVAGE=+$$AGE^WVUTL9(WVDFN)
 +23                       IF WVAGRG'=1
                               if ((WVAGE<$PIECE(WVAGRG,"-"))!(WVAGE>$PIECE(WVAGRG,"-",2)))
                                   QUIT 
 +24      ;
 +25      ;---> GET VALUE OF RESULT: 0=NORMAL, 1=ABNORMAL, 2=NO RESULT
 +26                       SET WVNORM=$$NORMAL^WVUTL4(WVRES)
                           if WVNORM=2
                               SET WVNORM=0
 +27      ;
 +28                       SET ^TMP("WV",$JOB,WVDFN,WVNORM,WVPCDN,WVIEN)=""
 +29                       IF WVPCDN=1
                               Begin DoDot:3
 +30                               SET WVJPAPR=$PIECE($GET(^WV(790,WVDFN,0)),U,16)
 +31                               IF WVJPAPR'>0
                                       SET WVJPAPR="NOT SPECIFIED"
 +32                              IF '$TEST
                                       SET WVJPAPR=$PIECE($GET(^WV(790.03,WVJPAPR,0)),U)
 +33                               SET ^TMP("WVP",$JOB,WVJPAPR,WVDFN,WVNORM,WVPCDN,WVIEN)=""
                               End DoDot:3
 +34                       IF WVPCDN=28
                               Begin DoDot:3
 +35                               SET WVJ=$ORDER(WVAGRG(WVAGE))
 +36                               SET WVJAGER=$SELECT(WVJ=20:"<20",WVJ=30:"20-29",WVJ=40:"30-39",WVJ=50:"40-49",WVJ=60:"50-59",WVJ=70:"60-69",WVJ=200:">70",1:"AGE UNKNOWN")
 +37                               SET ^TMP("WVP",$JOB,WVJAGER,WVDFN,WVNORM,WVPCDN,WVIEN)=""
                               End DoDot:3
                       End DoDot:2
               End DoDot:1
 +38      ;
 +39      ;---> NOW COLLATE DATA FROM ^TMP ARRAY INTO LOCAL WVTMP REPORT ARRAY.
 +40      ;---> FIRST, SEED LOCAL ARRAY WITH ZEROS.
 +41       FOR M=1,28
               Begin DoDot:1
 +42               NEW I
                   FOR I=1:1:5
                       SET WVTMP("RES",M,I)=0
               End DoDot:1
 +43      ;
 +44      ;---> COLLATE DATA.
 +45       SET N=0
 +46       FOR 
               SET N=$ORDER(^TMP("WV",$JOB,N))
               if 'N
                   QUIT 
               Begin DoDot:1
 +47               FOR M=1,28
                       Begin DoDot:2
 +48                       if $DATA(^TMP("WV",$JOB,N,1,M))
                               QUIT 
 +49                       SET P=0
                           SET Q=0
 +50                       FOR 
                               SET P=$ORDER(^TMP("WV",$JOB,N,0,M,P))
                               if 'P
                                   QUIT 
                               SET Q=Q+1
 +51                       if 'Q
                               QUIT 
 +52                       IF '$DATA(WVTMP("RES",M,Q))
                               SET WVTMP("RES",M,Q)=1
                               QUIT 
 +53                       SET WVTMP("RES",M,Q)=WVTMP("RES",M,Q)+1
                       End DoDot:2
               End DoDot:1
 +54      ;
 +55      ;---> STORE ALL NODES >5 IN THE 5+ NODE.
 +56       FOR M=1,28
               Begin DoDot:1
 +57               SET Q=5
 +58               FOR 
                       SET Q=$ORDER(WVTMP("RES",M,Q))
                       if 'Q
                           QUIT 
                       Begin DoDot:2
 +59                       SET WVTMP("RES",M,5)=WVTMP("RES",M,5)+WVTMP("RES",M,Q)
 +60                       KILL WVTMP("RES",M,Q)
                       End DoDot:2
               End DoDot:1
 +61      ;
 +62      ;---> FIGURE PERCENTAGES OF WOMEN AND STORE IN ARRAY.
 +63       FOR M=1,28
               Begin DoDot:1
 +64               FOR Q=1:1:5
                       SET $PIECE(WVTMP("RES",M,Q),U,2)=$JUSTIFY((+WVTMP("RES",M,Q)/WVTOT),0,2)
               End DoDot:1
 +65      ;
 +66      ;---> BUILD DISPLAY ARRAY.
 +67       NEW WVNODE
           KILL ^TMP("WV",$JOB)
 +68      ;
 +69      ;---> PAPS SUBHEADER LINE.
 +70       SET WVNODE=$$S(40)_"SCREENING PAPS"
 +71       DO WRITE(1,WVNODE)
 +72       SET WVNODE=$$S(39)_"----------------"
 +73       DO WRITE(2,WVNODE)
 +74       SET WVNODE=" # of PAPs:                                        1     2     3     4     5+"
 +75       DO WRITE(4,WVNODE)
 +76       SET WVNODE=" -----------                                     ----- ----- ----- ----- -----"
 +77       DO WRITE(5,WVNODE)
 +78      ;
 +79      ;---> PAPS NUMBER OF WOMEN DATA LINE.
 +80       SET WVNODE=" # of Women:                                    "
 +81       FOR Q=1:1:5
               SET WVNODE=WVNODE_$JUSTIFY($PIECE(WVTMP("RES",1,Q),U),6)
 +82       DO WRITE(6,WVNODE)
 +83       SET WVNODE=" % of Women:                                    "
 +84       FOR Q=1:1:5
               SET WVNODE=WVNODE_$JUSTIFY(($PIECE(WVTMP("RES",1,Q),U,2)*100),5)_"%"
 +85       DO WRITE(7,WVNODE)
 +86      ;
 +87      ;---> LINE FEEDS BETWEEN PAPS AND MAMS.
 +88       SET WVNODE=""
           DO WRITE(8,WVNODE)
           SET WVNODE=""
           DO WRITE(9,WVNODE)
 +89      ;
 +90      ;---> MAMS SUBHEADER LINE.
 +91       SET WVNODE=$$S(40)_"SCREENING MAMS"
 +92       DO WRITE(10,WVNODE)
 +93       SET WVNODE=$$S(39)_"----------------"
 +94       DO WRITE(11,WVNODE)
 +95       SET WVNODE=" # of MAMs:                                        1     2     3     4     5+"
 +96       DO WRITE(13,WVNODE)
 +97       SET WVNODE=" -----------                                     ----- ----- ----- ----- -----"
 +98       DO WRITE(14,WVNODE)
 +99      ;
 +100     ;---> PAPS NUMBER OF WOMEN DATA LINE.
 +101      SET WVNODE=" # of Women:                                    "
 +102      FOR Q=1:1:5
               SET WVNODE=WVNODE_$JUSTIFY($PIECE(WVTMP("RES",28,Q),U),6)
 +103      DO WRITE(15,WVNODE)
 +104      SET WVNODE=" % of Women:                                    "
 +105      FOR Q=1:1:5
               SET WVNODE=WVNODE_$JUSTIFY(($PIECE(WVTMP("RES",28,Q),U,2)*100),5)_"%"
 +106      DO WRITE(16,WVNODE)
 +107      QUIT 
 +108     ;
WRITE(I,Y) ;EP
 +1        SET ^TMP("WV",$JOB,I,0)=Y
 +2        QUIT 
 +3       ;
S(S)      ;EP
 +1       ;---> SPACES.
 +2        QUIT $$S^WVUTL7($GET(S))
 +3       ;
 +4       ;
AGERNG(WVAGRG,WVPOP) ;EP
 +1       ;---> ASK AGE RANGE.
 +2       ;---> RETURN AGE RANGE IN WVAGRG.
 +3        NEW DIR,DIRUT,Y
           SET WVPOP=0
 +4        WRITE !!?3,"Do you wish to limit this report to an age range?"
 +5        SET DIR(0)="Y"
           SET DIR("B")="NO"
           DO HELP1
 +6        SET DIR("A")="   Enter Yes or No"
 +7        DO ^DIR
           KILL DIR
           WRITE !
 +8        if $DATA(DIRUT)
               SET WVPOP=1
 +9       ;---> IF NOT DISPLAYING BY AGE RANGE, SET WVAGRG (AGE RANGE)=1, QUIT.
 +10       IF 'Y
               SET WVAGRG=1
               QUIT 
BYAGE1    ;
 +1        WRITE !?5,"Enter the age range you wish to select in the form of: 40-75"
 +2        WRITE !?5,"Use a dash ""-"" to separate the limits of the range."
 +3        WRITE !?5,"To select only one age, simply enter that age, with no dash."
 +4        WRITE !?5,"(NOTE: Patient ages will reflect the age they are today.)",!
 +5        KILL DIR
 +6        SET DIR(0)="FOA"
           SET DIR("A")="     Enter age range: "
 +7        if $DATA(^WV(790.72,DUZ,0))
               SET DIR("B")=$PIECE(^(0),U,3)
 +8        DO ^DIR
           KILL DIR
 +9        IF $DATA(DIRUT)
               SET WVPOP=1
               QUIT 
 +10       DO CHECK(.Y)
 +11       IF Y=""
               Begin DoDot:1
 +12               WRITE !!?5,"* INVALID AGE RANGE.  Please begin again."
               End DoDot:1
               GOTO BYAGE1
 +13      ;---> WVAGRG=SELECTED AGE RANGE(S).
 +14       SET WVAGRG=Y
 +15       DO DIC^WVFMAN(790.72,"L",.Y,"","","","`"_DUZ)
 +16       if Y<0
               QUIT 
 +17       DO DIE^WVFMAN(790.72,".03////"_WVAGRG,+Y,.WVPOP,1)
 +18       QUIT 
 +19      ;
HELP1     ;EP
 +1       ;;Answer "YES" to display screening rates for a specific age range.
 +2       ;;If you choose to display for an age range, you will be given the
 +3       ;;opportunity to select the age range.  For example, you might choose
 +4       ;;to display from ages 50-75.
 +5       ;;Answer "NO" to display screening rates for all ages.
 +6        SET WVTAB=5
           SET WVLINL="HELP1"
           DO HELPTX
 +7        QUIT 
 +8       ;
PRINTX    ;EP
 +1        NEW I,T,X
           SET T=$$REPEAT^XLFSTR(" ",WVTAB)
 +2        FOR I=1:1
               SET X=$TEXT(@WVLINL+I)
               if X'[";;"
                   QUIT 
               WRITE !,T,$PIECE(X,";;",2)
 +3        QUIT 
 +4       ;
HELPTX    ;EP
 +1       ;---> CREATES DIR ARRAY FOR DIR.  REQUIRED VARIABLES: WVTAB,WVLINL.
 +2        NEW I,T,X
           SET T=$$REPEAT^XLFSTR(" ",WVTAB)
 +3        FOR I=1:1
               SET X=$TEXT(@WVLINL+I)
               if X'[";;"
                   QUIT 
               SET DIR("?",I)=T_$PIECE(X,";;",2)
 +4        SET DIR("?")=DIR("?",I-1)
           KILL DIR("?",I-1)
 +5        QUIT 
 +6       ;
CHECK(X)  ;EP
 +1       ;---> CHECK SYNTAX OF AGE RANGE STRING.
 +2       ;---> IF X=ONE AGE ONLY, SET IT IN THE FORM X-X AND QUIT.
 +3        IF X?1N.N
               SET X=X_"-"_X
               QUIT 
 +4       ;
 +5        NEW FAIL,I,Y1,Y2
 +6        SET FAIL=0
 +7       ;---> CHECK EACH RANGE.
 +8        SET Y1=$PIECE(X,"-")
           SET Y2=$PIECE(X,"-",2)
 +9       ;---> EACH END OF EACH RANGE SHOULD BE A NUMBER.
 +10       IF (Y1'?1N.N)!(Y2'?1N.N)
               SET X=""
               QUIT 
 +11      ;---> THE LOWER NUMBER SHOULD BE FIRST.
 +12       IF Y2<Y1
               SET FAIL=1
 +13       IF FAIL
               SET X=""
               QUIT 
 +14       QUIT