DENTDNQ ;WASH ISC/TJK,JA,NCA-SCREEN INPUT-QUESTIONMARKS ;8/28/92  09:08
 ;;1.2;DENTAL;**15,23**;NOV 1993
 S D=""
A S DJX="" X DJCP
 I DJ4["R" W "**REQUIRED**",*7
 S:'$D(X) X=DJXX G:X'="??" F G:'$D(^DD(DJDD,DJAT,21,0)) F G:'$P(^(0),U,4) F
 S DJZ1=0,DIWL=1,DIWR=79,DIWF="" K ^UTILITY($J,"W")
 S DJXX=X F DJK=1:1 S DJZ1=$O(^DD(DJDD,DJAT,21,DJZ1)) Q:DJZ1=""  S X=^(DJZ1,0) D ^DIWP
 D ^DIWW ;    purge WP buffer
 S DJZ1=0 F DJK=1:1 S DJZ1=$O(^UTILITY($J,"W",DIWL,DJZ1)) Q:DJZ1=""  D:$Y>21 CONT Q:DJX[U  W !,^(DJZ1,0)
 K DJZ1,DJK,^UTILITY($J,"W",DIWL),DIWL,DIWR,DIWF S X=DJXX G:DJX'[U F Q
CONT W !,"Press <RETURN> to Continue, '^' to Quit: " R DJX:DTIME
 I $Y>22 S DJSV=V D N^DENTDPL S V=DJSV
 X DJCP W !
 Q
F D:$Y>21 CONT I DJX[U D FUNC^DENTDNQ2 Q
 D:$D(^DD(DJDD,DJAT,3)) DEDJHELP I $D(^DD(DJDD,DJAT,4)) W ! X ^(4)
 I DJ4["S",DJ4'["M" D:$Y>21 CONT G:DJX[U END D  D FUNC^DENTDNQ2
 .W !,"CHOOSE FROM:" S DJS=$P(^DD(DJDD,DJAT,0),U,3)
 .F DJK=1:1 S Y=$P(DJS,";",DJK) Q:Y=""  D
 ..S Y="'"_$P(Y,":",1)_"'  FOR "_$P(Y,":",2)
 ..D:$Y>21 CONT Q:DJX[U
 ..W !,Y Q
 .D CONT Q
 D DCS
 I DJ4["P" K DIC("S") S DJDIC=DIC,DJD0=D0,DIC(0)=$S(DJ4["'":"MEQZ",1:"MEQZL"),DIC=+$P(DJ4,"P",2) D:$Y>21 CONT X:$P(^DD(DJDD,DJAT,0),U,2)["*" ^(12.1) D ^DENTDC K DIC S DIC=DJDIC,D0=DJD0 G:Y<0 R1 S V(V)=$P(Y,U,2) G P1
 I DJ4["D" S:'$D(%DT) %DT="E" D HELP
 I DJ4["N" D FUNC^DENTDNQ2
 K DJS,DJZ1 I $Y>23 X DJCL R "Press <RETURN> to Continue",X:DTIME S DJZ=V D N^DENTDPL S V=DJZ Q
 S @$P(DJJ(V),U,2) X XY W V(V) Q
P D DCS
 K DIC("S") S DJDIC=DIC,DJD0=D0,DIC(0)=$S(DJ4["'":"MEQZ",1:"MEQZL"),DIC=+$P(DJ4,"P",2) X DJCP X:$P(^DD(DJDD,DJAT,0),U,2)["*" ^(12.1) D ^DENTDC K DIC S:+Y>0 V(V)=$E($P(Y,U,2),1,+DJJ(V)),DIC=DJDIC,D0=DJD0 G:Y<0 R1
P1 S X=+Y,V(V)=$E($P(Y,U,2),1,+DJJ(V)),(DIE,DIC)=DJDIC,DA=DJDN,DR=DJ3_"////"_X X DJCP W ! D ^DIE S D0=DJD0 K DJD0 D PP S V(V)=$E(V(V),1,+DJJ(V))
 S YMLH=$O(^DENT(697.3,DJN,1,"A",V,0)) S:YMLH="" YMLH=-1
 X:$D(^DENT(697.3,DJN,1,YMLH,1)) ^(1)
 I $Y>23 S DJZ=V D N^DENTDPL S V=DJZ Q
 S DY=17,DX=0 X XY W DJEOP S @$P(DJJ(V),U,2) X XY W DJHIN X XY W V(V),DJLIN D FUNC^DENTDNQ2 Q
END ; Exit and Display Commands
 D FUNC^DENTDNQ2 Q
R1 K DJD0 S DIC=DJDIC
 S @$P(DJJ(V),U,2) X XY W:$D(V(V)) DJHIN W:$D(V(V)) V(V) X XY D FUNC^DENTDNQ2 Q
HELP D:$Y>21 R W !,"EXAMPLES OF VALID DATES:"
 D:$Y>21 R W !,"  JAN 22 1957 or 22 JAN 57 or 1/22/57 or 012257"
 D:$Y>21 R W !,"  T (FOR TODAY), T+1 (FOR TOMORROW), T+2, T+7, etc."," T-1 (FOR YESTERDAY)"
 D:$Y>21 R W !,"  T-3W (3 WEEKS AGO), etc."
 D:$Y>21 R W !,"IF THE YEAR IS OMITTED, THE COMPUTER USES THE CURRENT YEAR",!
 D:$Y>21 R I %DT'["X" W "YOU MAY OMIT THE PRECISE DAY, AS:  JAN, 1957",!
 D:$Y>21 R I %DT["T" W "FOLLOW DATE WITH TIME, AS:  JAN 22@10,    T@10PM,   ETC."
 Q
R X DJCL W "Press <RETURN> to Continue" R DJX:10 X DJCP
PP S DJZ=+$P($P(^DD(DJDD,DJAT,0),"^",2),"P",2) Q:$P(^DD(DJZ,.01,0),"^",2)'["P"
P11 I $D(@("^"_$P(^DD(DJZ,.01,0),U,3)_"V(V),0)")) S V(V)=$P(^(0),U,1)
 S DJZ=+$P($P(^DD(DJZ,.01,0),"^",2),"P",2) Q:$P(^DD(DJZ,.01,0),"^",2)'["P"  G P11
DCS S DJNODE=.01 Q:DJ4'["P"
 S DJ44=$S(DJ4'["'":DJ4,1:$P(DJ4,"P",2))
 Q:'$D(^DD(+DJ44,0,"UP"))  I $D(^DD(^DD(+DJ44,0,"UP"),0,"UP")) S DJ44=^DD(+DJ44,0,"UP"),DJNODE=$P(DJJ(V),U,3)
 I DJNODE=.01,$D(^DD(DJDD,DJ3,12.1)) X ^(12.1) G DCS1
 K DIC("S") Q:'$D(^DD(+DJ44,DJNODE))  S:'$D(DIC(0)) DIC(0)=""
 I $D(^DD(+DJ44,DJNODE,12.1)) X ^(12.1)
 E  K DJNODE,DJ44 Q
DCS1 S:'$D(DIC(0)) DIC(0)="" K:DIC(0)'="" DIC("S") K DJNODE,DJ44 Q
DEDJHELP ;
 S DECNT=0,DEDJHELP(1)=^DD(DJDD,DJAT,3)
 D DEDJHEL1
 R !,"Press <RETURN> to Continue: ",DEXRET:DTIME
 X DJCP
 K DEDJHELP,DECNT,DEXRET
 Q
DEDJHEL1 ;
 S DECNT=DECNT+1
 Q:'$D(DEDJHELP(DECNT))
 F I=79:-1:1 Q:$E(DEDJHELP(DECNT),I)=" "
 I $L(DEDJHELP(DECNT))>79 S DEDJHELP(DECNT+1)=$E(DEDJHELP(DECNT),I+1,$L(DEDJHELP(DECNT))),DEDJHELP(DECNT)=$E(DEDJHELP(DECNT),1,I-1)
 W !,DEDJHELP(DECNT)
 G DEDJHEL1
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDENTDNQ   3894     printed  Sep 23, 2025@19:22:27                                                                                                                                                                                                     Page 2
DENTDNQ   ;WASH ISC/TJK,JA,NCA-SCREEN INPUT-QUESTIONMARKS ;8/28/92  09:08
 +1       ;;1.2;DENTAL;**15,23**;NOV 1993
 +2        SET D=""
A          SET DJX=""
           XECUTE DJCP
 +1        IF DJ4["R"
               WRITE "**REQUIRED**",*7
 +2        if '$DATA(X)
               SET X=DJXX
           if X'="??"
               GOTO F
           if '$DATA(^DD(DJDD,DJAT,21,0))
               GOTO F
           if '$PIECE(^(0),U,4)
               GOTO F
 +3        SET DJZ1=0
           SET DIWL=1
           SET DIWR=79
           SET DIWF=""
           KILL ^UTILITY($JOB,"W")
 +4        SET DJXX=X
           FOR DJK=1:1
               SET DJZ1=$ORDER(^DD(DJDD,DJAT,21,DJZ1))
               if DJZ1=""
                   QUIT 
               SET X=^(DJZ1,0)
               DO ^DIWP
 +5       ;    purge WP buffer
           DO ^DIWW
 +6        SET DJZ1=0
           FOR DJK=1:1
               SET DJZ1=$ORDER(^UTILITY($JOB,"W",DIWL,DJZ1))
               if DJZ1=""
                   QUIT 
               if $Y>21
                   DO CONT
               if DJX[U
                   QUIT 
               WRITE !,^(DJZ1,0)
 +7        KILL DJZ1,DJK,^UTILITY($JOB,"W",DIWL),DIWL,DIWR,DIWF
           SET X=DJXX
           if DJX'[U
               GOTO F
           QUIT 
CONT       WRITE !,"Press <RETURN> to Continue, '^' to Quit: "
           READ DJX:DTIME
 +1        IF $Y>22
               SET DJSV=V
               DO N^DENTDPL
               SET V=DJSV
 +2        XECUTE DJCP
           WRITE !
 +3        QUIT 
F          if $Y>21
               DO CONT
           IF DJX[U
               DO FUNC^DENTDNQ2
               QUIT 
 +1        if $DATA(^DD(DJDD,DJAT,3))
               DO DEDJHELP
           IF $DATA(^DD(DJDD,DJAT,4))
               WRITE !
               XECUTE ^(4)
 +2        IF DJ4["S"
               IF DJ4'["M"
                   if $Y>21
                       DO CONT
                   if DJX[U
                       GOTO END
                   Begin DoDot:1
 +3                    WRITE !,"CHOOSE FROM:"
                       SET DJS=$PIECE(^DD(DJDD,DJAT,0),U,3)
 +4                    FOR DJK=1:1
                           SET Y=$PIECE(DJS,";",DJK)
                           if Y=""
                               QUIT 
                           Begin DoDot:2
 +5                            SET Y="'"_$PIECE(Y,":",1)_"'  FOR "_$PIECE(Y,":",2)
 +6                            if $Y>21
                                   DO CONT
                               if DJX[U
                                   QUIT 
 +7                            WRITE !,Y
                               QUIT 
                           End DoDot:2
 +8                    DO CONT
                       QUIT 
                   End DoDot:1
                   DO FUNC^DENTDNQ2
 +9        DO DCS
 +10       IF DJ4["P"
               KILL DIC("S")
               SET DJDIC=DIC
               SET DJD0=D0
               SET DIC(0)=$SELECT(DJ4["'":"MEQZ",1:"MEQZL")
               SET DIC=+$PIECE(DJ4,"P",2)
               if $Y>21
                   DO CONT
               if $PIECE(^DD(DJDD,DJAT,0),U,2)["*"
                   XECUTE ^(12.1)
               DO ^DENTDC
               KILL DIC
               SET DIC=DJDIC
               SET D0=DJD0
               if Y<0
                   GOTO R1
               SET V(V)=$PIECE(Y,U,2)
               GOTO P1
 +11       IF DJ4["D"
               if '$DATA(%DT)
                   SET %DT="E"
               DO HELP
 +12       IF DJ4["N"
               DO FUNC^DENTDNQ2
 +13       KILL DJS,DJZ1
           IF $Y>23
               XECUTE DJCL
               READ "Press <RETURN> to Continue",X:DTIME
               SET DJZ=V
               DO N^DENTDPL
               SET V=DJZ
               QUIT 
 +14       SET @$PIECE(DJJ(V),U,2)
           XECUTE XY
           WRITE V(V)
           QUIT 
P          DO DCS
 +1        KILL DIC("S")
           SET DJDIC=DIC
           SET DJD0=D0
           SET DIC(0)=$SELECT(DJ4["'":"MEQZ",1:"MEQZL")
           SET DIC=+$PIECE(DJ4,"P",2)
           XECUTE DJCP
           if $PIECE(^DD(DJDD,DJAT,0),U,2)["*"
               XECUTE ^(12.1)
           DO ^DENTDC
           KILL DIC
           if +Y>0
               SET V(V)=$EXTRACT($PIECE(Y,U,2),1,+DJJ(V))
               SET DIC=DJDIC
               SET D0=DJD0
           if Y<0
               GOTO R1
P1         SET X=+Y
           SET V(V)=$EXTRACT($PIECE(Y,U,2),1,+DJJ(V))
           SET (DIE,DIC)=DJDIC
           SET DA=DJDN
           SET DR=DJ3_"////"_X
           XECUTE DJCP
           WRITE !
           DO ^DIE
           SET D0=DJD0
           KILL DJD0
           DO PP
           SET V(V)=$EXTRACT(V(V),1,+DJJ(V))
 +1        SET YMLH=$ORDER(^DENT(697.3,DJN,1,"A",V,0))
           if YMLH=""
               SET YMLH=-1
 +2        if $DATA(^DENT(697.3,DJN,1,YMLH,1))
               XECUTE ^(1)
 +3        IF $Y>23
               SET DJZ=V
               DO N^DENTDPL
               SET V=DJZ
               QUIT 
 +4        SET DY=17
           SET DX=0
           XECUTE XY
           WRITE DJEOP
           SET @$PIECE(DJJ(V),U,2)
           XECUTE XY
           WRITE DJHIN
           XECUTE XY
           WRITE V(V),DJLIN
           DO FUNC^DENTDNQ2
           QUIT 
END       ; Exit and Display Commands
 +1        DO FUNC^DENTDNQ2
           QUIT 
R1         KILL DJD0
           SET DIC=DJDIC
 +1        SET @$PIECE(DJJ(V),U,2)
           XECUTE XY
           if $DATA(V(V))
               WRITE DJHIN
           if $DATA(V(V))
               WRITE V(V)
           XECUTE XY
           DO FUNC^DENTDNQ2
           QUIT 
HELP       if $Y>21
               DO R
           WRITE !,"EXAMPLES OF VALID DATES:"
 +1        if $Y>21
               DO R
           WRITE !,"  JAN 22 1957 or 22 JAN 57 or 1/22/57 or 012257"
 +2        if $Y>21
               DO R
           WRITE !,"  T (FOR TODAY), T+1 (FOR TOMORROW), T+2, T+7, etc."," T-1 (FOR YESTERDAY)"
 +3        if $Y>21
               DO R
           WRITE !,"  T-3W (3 WEEKS AGO), etc."
 +4        if $Y>21
               DO R
           WRITE !,"IF THE YEAR IS OMITTED, THE COMPUTER USES THE CURRENT YEAR",!
 +5        if $Y>21
               DO R
           IF %DT'["X"
               WRITE "YOU MAY OMIT THE PRECISE DAY, AS:  JAN, 1957",!
 +6        if $Y>21
               DO R
           IF %DT["T"
               WRITE "FOLLOW DATE WITH TIME, AS:  JAN 22@10,    T@10PM,   ETC."
 +7        QUIT 
R          XECUTE DJCL
           WRITE "Press <RETURN> to Continue"
           READ DJX:10
           XECUTE DJCP
PP         SET DJZ=+$PIECE($PIECE(^DD(DJDD,DJAT,0),"^",2),"P",2)
           if $PIECE(^DD(DJZ,.01,0),"^",2)'["P"
               QUIT 
P11        IF $DATA(@("^"_$PIECE(^DD(DJZ,.01,0),U,3)_"V(V),0)"))
               SET V(V)=$PIECE(^(0),U,1)
 +1        SET DJZ=+$PIECE($PIECE(^DD(DJZ,.01,0),"^",2),"P",2)
           if $PIECE(^DD(DJZ,.01,0),"^",2)'["P"
               QUIT 
           GOTO P11
DCS        SET DJNODE=.01
           if DJ4'["P"
               QUIT 
 +1        SET DJ44=$SELECT(DJ4'["'":DJ4,1:$PIECE(DJ4,"P",2))
 +2        if '$DATA(^DD(+DJ44,0,"UP"))
               QUIT 
           IF $DATA(^DD(^DD(+DJ44,0,"UP"),0,"UP"))
               SET DJ44=^DD(+DJ44,0,"UP")
               SET DJNODE=$PIECE(DJJ(V),U,3)
 +3        IF DJNODE=.01
               IF $DATA(^DD(DJDD,DJ3,12.1))
                   XECUTE ^(12.1)
                   GOTO DCS1
 +4        KILL DIC("S")
           if '$DATA(^DD(+DJ44,DJNODE))
               QUIT 
           if '$DATA(DIC(0))
               SET DIC(0)=""
 +5        IF $DATA(^DD(+DJ44,DJNODE,12.1))
               XECUTE ^(12.1)
 +6       IF '$TEST
               KILL DJNODE,DJ44
               QUIT 
DCS1       if '$DATA(DIC(0))
               SET DIC(0)=""
           if DIC(0)'=""
               KILL DIC("S")
           KILL DJNODE,DJ44
           QUIT 
DEDJHELP  ;
 +1        SET DECNT=0
           SET DEDJHELP(1)=^DD(DJDD,DJAT,3)
 +2        DO DEDJHEL1
 +3        READ !,"Press <RETURN> to Continue: ",DEXRET:DTIME
 +4        XECUTE DJCP
 +5        KILL DEDJHELP,DECNT,DEXRET
 +6        QUIT 
DEDJHEL1  ;
 +1        SET DECNT=DECNT+1
 +2        if '$DATA(DEDJHELP(DECNT))
               QUIT 
 +3        FOR I=79:-1:1
               if $EXTRACT(DEDJHELP(DECNT),I)=" "
                   QUIT 
 +4        IF $LENGTH(DEDJHELP(DECNT))>79
               SET DEDJHELP(DECNT+1)=$EXTRACT(DEDJHELP(DECNT),I+1,$LENGTH(DEDJHELP(DECNT)))
               SET DEDJHELP(DECNT)=$EXTRACT(DEDJHELP(DECNT),1,I-1)
 +5        WRITE !,DEDJHELP(DECNT)
 +6        GOTO DEDJHEL1