DENTDCQ ;WASH ISC/TJK-MODIFIED DICQ ROUTINE  ;9/8/92  08:16
 ;;1.2;DENTAL;***15**;Oct 08, 1992
 S DZ=X D:DIC(0)]"" DQ S:$D(DZ) X=DZ K DZ,XQH G A^DENTDC
 ;
DQ W ! D:'$D(DO) DO^DENTDC1 K DS,%Y I DO="0^-1" K DO W "  Pointed-to File does not exist!" Q
 S DD="",Y=$P(DO,U,4),DIY=DO,DIX=D D DIY
 S X=$S($D(^DD(+DO(2),.001,0)):$P(^(0),U,1),DIC(0)["N":"NUMBER",1:""),DIZ=X]"",DIW=^DD(+DO(2),.01,0)
 S DIW=$P(DIW,U,2,3) G:$D(^DD(+DO(2),0,"QUES")) @^("QUES") I DIZ S DS=.001 D DS
IX I $D(DEBDIC),DEBDIC=DIC,$D(DEDF) S DIX=DEDF
 S X=$O(^DD(+DO(2),0,"IX",DIX,-1)) S:X="" X=-1 I X'<0 S DS=$O(^(X,0)) S:DS="" DS=-1 I $D(^DD(X,DS,0)) S %=$P(^(0),U,2,3),X=$P(^(0),U,1) D DS
 I @("$D("_DIC_"DIX))>9!$D(DF)"),DD="" S DD=DIX,DIW=% S:'Y Y=2 S:'$D(^(DD)) Y=0,DIZ=0
 S DIX=$O(@(DIC_"DIX)")) S:DIX="" DIX=-1 G IX:DIC(0)["M"&'DIX I DD="" S DIZ=1,YMLH=$O(^("AZ")) S:YMLH'=""&'YMLH Y=0
 I $D(DZ)#2 G C:DZ["??" S:DZ["BAD" Y=0
 W " ANSWER WITH ",$P(DO,U,1) S DS=0
 F X=1:1 S DS=$O(DS(DS)) S:DS="" DS=-1 Q:DS<0  W $P(", OR",U,X>1) W:$X+$L(DS(DS))>70 !?4 W " ",DS(DS) I $Y>21 R !,"Press <RETURN> to Continue: ",%Y:DTIME X DJCP
 K DS W $E(":",Y) ;G 0:'Y
20 D DCS^DENTDNQ G C:Y<6 W !," DO YOU WANT THE ENTIRE " W:DO(2)'["s"&'$D(DIC("S"))&'$D(DF) Y,"-ENTRY " W $P(DO,U,1)," LIST" S %=0 D YN^DENTDCN S:%=1 %Y=1 I %Y'="??" S %Y=$E(%Y,2,99)
 G 0:%#2=0!(%<0&(%Y="")),C:%Y=""
 S DIZ=$S(+%Y=%Y:1,DD]"":0,1:DIZ) I +%Y'=%Y G 20:DD="" I $P(DIW,U,1)["D" S DS=Y,X=%Y,%DT="T" D ^%DT K %DT S %Y=Y,Y=DS,DIZ=0 I %Y<0 W *7 G 20
C I $Y>20 D CONT^DENTDCQ1 Q:%Y=U  X DJCP
 D DCS^DENTDNQ W:Y>1&(DZ'="???") !,"CHOOSE FROM:" S X=$P(" D S Q:$G(%Y)=U  I ",U,$D(DIC("S"))!$D(DO("SCR")))
 I DIZ S DS="I $D(^(Y,0))#2 S X=$P(^(0),""^"",1)"_X_" W"_$S(DO(2)'["D":"",1:":$L(Y)<8")_" Y,?$X+5-$L(Y),"" """,DIX="S Y=$O("_DIC_"Y)) S:Y="""" Y=-1 I Y'>0" G A
 S DIX="S X=$O("_DIC_""""_DD_""",X)) I X=""""",DS=$S(X]""!$D(DIC("W")):"F Y=0:0 S Y=$O("_DIC_""""_DD_""",X,Y)) S:Y="""" Y=-1 Q:Y<0 "_$P(" I $D(^(Y))#2,'^(Y)",1,DD="B")_" I $D("_DIC_"Y,0))"_X,1:"I 1")_" W:$X>5 !?3"
A S X="X"
D S Y=$P(DIW,U,1) I Y["D" S DIY=27,X=" S %="_X_" D DT" G ^DENTDCQ1
 I Y["P",$P(DIW,U,2)["(" S DIY=U_$P(DIW,U,2),X="$S($D("_DIY_X_",0))#2:$P(^(0),""^"",1),1:"_X_")" I @("$D("_DIY_"0))") S DIY=^(0) D DIY S DIW=$P(^(0),U,2,3) G D
 I Y["S",Y[U S DS(95)=$P(DIW,U,2),X="$P($P(DS(95),"_X_"_"":"",2),"";"",1)"
 I Y["V" S X=" S %Y=Y,Y=X,DJC=+DO(2) D Y^DENTDCM2 K DJC W Y S Y=%Y" G ^DENTDCQ1
 S X=" W "_X
M G ^DENTDCQ1
 ;
0 K DIW,DIZ,DS G 0^DENTDCQ1:DIC(0)["L" Q
 ;
DIY S DIY=$P(^DD(+$P(DIY,U,2),.01,0),"$L(X)>",2),DIY=$S(DIY:DIY,1:30)+7 Q
 ;
SOUNDEX S Y=0 G IX
 ;
DS S:DO'[X DS(DS)=X
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDENTDCQ   2630     printed  Sep 23, 2025@19:22:20                                                                                                                                                                                                     Page 2
DENTDCQ   ;WASH ISC/TJK-MODIFIED DICQ ROUTINE  ;9/8/92  08:16
 +1       ;;1.2;DENTAL;***15**;Oct 08, 1992
 +2        SET DZ=X
           if DIC(0)]""
               DO DQ
           if $DATA(DZ)
               SET X=DZ
           KILL DZ,XQH
           GOTO A^DENTDC
 +3       ;
DQ         WRITE !
           if '$DATA(DO)
               DO DO^DENTDC1
           KILL DS,%Y
           IF DO="0^-1"
               KILL DO
               WRITE "  Pointed-to File does not exist!"
               QUIT 
 +1        SET DD=""
           SET Y=$PIECE(DO,U,4)
           SET DIY=DO
           SET DIX=D
           DO DIY
 +2        SET X=$SELECT($DATA(^DD(+DO(2),.001,0)):$PIECE(^(0),U,1),DIC(0)["N":"NUMBER",1:"")
           SET DIZ=X]""
           SET DIW=^DD(+DO(2),.01,0)
 +3        SET DIW=$PIECE(DIW,U,2,3)
           if $DATA(^DD(+DO(2),0,"QUES"))
               GOTO @^("QUES")
           IF DIZ
               SET DS=.001
               DO DS
IX         IF $DATA(DEBDIC)
               IF DEBDIC=DIC
                   IF $DATA(DEDF)
                       SET DIX=DEDF
 +1        SET X=$ORDER(^DD(+DO(2),0,"IX",DIX,-1))
           if X=""
               SET X=-1
           IF X'<0
               SET DS=$ORDER(^(X,0))
               if DS=""
                   SET DS=-1
               IF $DATA(^DD(X,DS,0))
                   SET %=$PIECE(^(0),U,2,3)
                   SET X=$PIECE(^(0),U,1)
                   DO DS
 +2        IF @("$D("_DIC_"DIX))>9!$D(DF)")
               IF DD=""
                   SET DD=DIX
                   SET DIW=%
                   if 'Y
                       SET Y=2
                   if '$DATA(^(DD))
                       SET Y=0
                       SET DIZ=0
 +3        SET DIX=$ORDER(@(DIC_"DIX)"))
           if DIX=""
               SET DIX=-1
           if DIC(0)["M"&'DIX
               GOTO IX
           IF DD=""
               SET DIZ=1
               SET YMLH=$ORDER(^("AZ"))
               if YMLH'=""&'YMLH
                   SET Y=0
 +4        IF $DATA(DZ)#2
               if DZ["??"
                   GOTO C
               if DZ["BAD"
                   SET Y=0
 +5        WRITE " ANSWER WITH ",$PIECE(DO,U,1)
           SET DS=0
 +6        FOR X=1:1
               SET DS=$ORDER(DS(DS))
               if DS=""
                   SET DS=-1
               if DS<0
                   QUIT 
               WRITE $PIECE(", OR",U,X>1)
               if $X+$LENGTH(DS(DS))>70
                   WRITE !?4
               WRITE " ",DS(DS)
               IF $Y>21
                   READ !,"Press <RETURN> to Continue: ",%Y:DTIME
                   XECUTE DJCP
 +7       ;G 0:'Y
           KILL DS
           WRITE $EXTRACT(":",Y)
20         DO DCS^DENTDNQ
           if Y<6
               GOTO C
           WRITE !," DO YOU WANT THE ENTIRE "
           if DO(2)'["s"&'$DATA(DIC("S"))&'$DATA(DF)
               WRITE Y,"-ENTRY "
           WRITE $PIECE(DO,U,1)," LIST"
           SET %=0
           DO YN^DENTDCN
           if %=1
               SET %Y=1
           IF %Y'="??"
               SET %Y=$EXTRACT(%Y,2,99)
 +1        if %#2=0!(%<0&(%Y=""))
               GOTO 0
           if %Y=""
               GOTO C
 +2        SET DIZ=$SELECT(+%Y=%Y:1,DD]"":0,1:DIZ)
           IF +%Y'=%Y
               if DD=""
                   GOTO 20
               IF $PIECE(DIW,U,1)["D"
                   SET DS=Y
                   SET X=%Y
                   SET %DT="T"
                   DO ^%DT
                   KILL %DT
                   SET %Y=Y
                   SET Y=DS
                   SET DIZ=0
                   IF %Y<0
                       WRITE *7
                       GOTO 20
C          IF $Y>20
               DO CONT^DENTDCQ1
               if %Y=U
                   QUIT 
               XECUTE DJCP
 +1        DO DCS^DENTDNQ
           if Y>1&(DZ'="???")
               WRITE !,"CHOOSE FROM:"
           SET X=$PIECE(" D S Q:$G(%Y)=U  I ",U,$DATA(DIC("S"))!$DATA(DO("SCR")))
 +2        IF DIZ
               SET DS="I $D(^(Y,0))#2 S X=$P(^(0),""^"",1)"_X_" W"_$SELECT(DO(2)'["D":"",1:":$L(Y)<8")_" Y,?$X+5-$L(Y),"" """
               SET DIX="S Y=$O("_DIC_"Y)) S:Y="""" Y=-1 I Y'>0"
               GOTO A
 +3        SET DIX="S X=$O("_DIC_""""_DD_""",X)) I X="""""
           SET DS=$SELECT(X]""!$DATA(DIC("W")):"F Y=0:0 S Y=$O("_DIC_""""_DD_""",X,Y)) S:Y="""" Y=-1 Q:Y<0 "_$PIECE(" I $D(^(Y))#2,'^(Y)",1,DD="B")_" I $D("_DIC_"Y,0))"_X,1:"I 1")_" W:$X>5 !?3"
A          SET X="X"
D          SET Y=$PIECE(DIW,U,1)
           IF Y["D"
               SET DIY=27
               SET X=" S %="_X_" D DT"
               GOTO ^DENTDCQ1
 +1        IF Y["P"
               IF $PIECE(DIW,U,2)["("
                   SET DIY=U_$PIECE(DIW,U,2)
                   SET X="$S($D("_DIY_X_",0))#2:$P(^(0),""^"",1),1:"_X_")"
                   IF @("$D("_DIY_"0))")
                       SET DIY=^(0)
                       DO DIY
                       SET DIW=$PIECE(^(0),U,2,3)
                       GOTO D
 +2        IF Y["S"
               IF Y[U
                   SET DS(95)=$PIECE(DIW,U,2)
                   SET X="$P($P(DS(95),"_X_"_"":"",2),"";"",1)"
 +3        IF Y["V"
               SET X=" S %Y=Y,Y=X,DJC=+DO(2) D Y^DENTDCM2 K DJC W Y S Y=%Y"
               GOTO ^DENTDCQ1
 +4        SET X=" W "_X
M          GOTO ^DENTDCQ1
 +1       ;
0          KILL DIW,DIZ,DS
           if DIC(0)["L"
               GOTO 0^DENTDCQ1
           QUIT 
 +1       ;
DIY        SET DIY=$PIECE(^DD(+$PIECE(DIY,U,2),.01,0),"$L(X)>",2)
           SET DIY=$SELECT(DIY:DIY,1:30)+7
           QUIT 
 +1       ;
SOUNDEX    SET Y=0
           GOTO IX
 +1       ;
DS         if DO'[X
               SET DS(DS)=X
 +1        QUIT