DIL0 ;SFISC/GFT - TURN PRINT FLDS INTO CODE ;4NOV2016
 ;;22.2;VA FileMan;**4**;Jan 05, 2016;Build 5
 ;;Per VA Directive 6402, this routine should not be modified.
 ;;Submitted to OSEHRA 5 January 2015 by the VISTA Expertise Network.
 ;;Based on Medsphere Systems Corporation's MSC FileMan 1051.
 ;;Licensed under the terms of the Apache License, Version 2.0.
 ;;GFT;**91,102,999,1005,1012,1056**
 ;CALLED FROM ^DIL
 D XDUY S %=$P(X,U,2) S:%["Cm"&(W[";W") %="w"_% G WP:%["W",M:%["m",STATS^DIL1:$D(DCL(DP_U_+W)),N:W[";N"
 I W[";W" D  S D1=$S(%["C":Y,1:$P(" S Y=",U,Y'?1" ".E)_Y_" S X=Y") D W S Y=Y_D1_" D ^DIWP" Q
 .N %,DNP S DNP=1 D EN^DILL(DP,+W,1)
 D EN^DILL(DP,+W,1)
DN ;
 I W[";X" D  Q
 .S DE=$S(W[";C"!(W[";S"):DE,$A(Y)-32:" W ?0",1:"")
 .I $L(DE)+$L(Y)>250 D
 ..S %=Y,Y=DE,DE=% D PX^DIL S Y=DE
 .E  S Y=DE_Y
 .I $D(DIWR(DM)) D DIWR
DNW D H:DHD!$G(DIOSUBHD) I DG+DLN>IOM,DG K ^UTILITY("DIL",$J,DG) S DG='%*DM*2+2,DE=$P(W,";C",2),DG=$S(DE>0:DE-1,DE<0:IOM+DE,DG+DLN'>IOM!(W[";W"):DG,DLN>IOM:0,1:IOM-DLN),DE=" D T Q:'DN  W ?"_DG D W^DIL,H:DHD!$G(DIOSUBHD)
 S DG=2+DLN+DG Q:$D(DNP)  I $L(DE)+$L(Y)>250 S %=Y,Y=DE,DE=% D PX^DIL S Y=DE Q
 S Y=DE_Y Q
 ;
H S V=$P(X,U),Z=99,I=$F(W,";""") I I>0 Q:$E(W,I-4,I)=";Z;"""""  S I=$P(W,";""",2),V=$$CONVQQ^DILIBF($P(I,"""",1,$L(I,"""")-1)) ;V will be COLUMN HEADER
HEAD Q:V=""  S I=$P(V," ") I $L(I)>DLN S DLN=$L(I) ;Grab the next 'word'.  Column width may have to be increased for a long word
XD S V=$P(V," ",2,99),D=$P(V," ") I D]"",$L(I)+$L(D)<DLN S I=I_" "_D G XD
 S ^UTILITY("DIL",$J,DG,Z)=$J(I,DRJ*DLN),V(Z)="",Z=Z-1 G HEAD
 ;
XDUY ;
 I '$D(^DD(DP,+W,0)) S X="",DU=0,Y=0 Q
 S X=^(0),DU=$P(X,U,4),Y=$P(DU,";",2),DU=$P(DU,";") I W[";T",$D(^(.1)) S X=^(.1)_U_$P(X,U,2,99)
EGP E  S $P(X,U)=$$LABEL^DIALOGZ(DP,+W) ;**FIELD LABEL FOR OUTPUT HEADING
 S:+DU'=DU DU=""""_DU_""""
 I Y S Y="$P(X,U,"_Y_")" Q
 I Y="" S Y="D"_DM Q
 S Y=$E(Y,2,9) S:$P(Y,",",2)=+Y Y=+Y S Y="$E(X,"_Y_")" Q
 ;
WR ;
 K DLN D W^DILL
W S DRJ=0,DIWL=DIWL+1 I '$D(DLN) S %=IOM-DG,DLN=$S(%>20:%,1:IOM)-2
 S:W[";X" $P(X,U)="" D DNW S %=$P(DE,"W ?",2)+1,Y=DLN+%-1,DIO=2,%=" S DIWL="_%_",DIWR="_$S(IOM<Y:IOM,1:Y),Y=$P(DE," W ?")_% Q
 ;
WP S DN=%["L"_U D WR ;COME HERE FOR A W-P TYPE FIELD
 S DIO=3,Y=%_" D ^DIWP",X=F(DM-1) I DHT<0 S I=$E(^UTILITY("DIPZ",$J,X),2,999) D WPX S ^UTILITY("DIPZ",$J,X)=" "_I Q
 I $D(^UTILITY($J,99,X)) S I=^(X) D WPX S ^UTILITY($J,99,X)=I Q
WPX ;from DIPZ1
 S:DN I=^DD("FUNC",38,1)_" "_I ;'NOWRAP' FUNCTION
 I DE]"" S I=DE_" "_I ;GFT
 Q
 ;
M S D1=" S DICMX=""D "_$E("L",%'["w")_"^DIWP"" "_$P(X,U,5,99) D WR S Y=Y_D1 Q
 ;
N ;
 S DCL=DCL+1,DXS="Y",D=",Y=$$DITTO^DIO2("_DCL_",Y)",DITTO(DCL)="",I=""
 I %["C" S X=X_" S Y=X"_D_" S X=Y" G Z
 S Y=" S Y="_Y_D
Z D EN^DILL(DP,+W) G DN
 ;
DIWR ;CALLED FROM ^DIL
 G DIWR^DIPZ1:DHT I $D(DIWR(DM)),DX=DIWR(DM) S ^UTILITY($J,99,DX)="D A^DIWW" G K
 I $D(DIWR(DM)) F DX=DX+1:1 I '$D(^UTILITY($J,99,DX)) S ^(DX)="D ^DIWW" D DX^DIL(DX) G K
 D  S ^UTILITY($J,99,I)="D ^DIWW "_^UTILITY($J,99,I)
 .F I=DM-1:-1:0 I $D(DIWR(I)) K DIWR(I) Q
 .I I S I=F(I)
 .E  F I=1:1 Q:'$D(^UTILITY($J,99,I+1))
K K DIWR(DM) Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDIL0   3134     printed  Sep 23, 2025@20:25:22                                                                                                                                                                                                        Page 2
DIL0      ;SFISC/GFT - TURN PRINT FLDS INTO CODE ;4NOV2016
 +1       ;;22.2;VA FileMan;**4**;Jan 05, 2016;Build 5
 +2       ;;Per VA Directive 6402, this routine should not be modified.
 +3       ;;Submitted to OSEHRA 5 January 2015 by the VISTA Expertise Network.
 +4       ;;Based on Medsphere Systems Corporation's MSC FileMan 1051.
 +5       ;;Licensed under the terms of the Apache License, Version 2.0.
 +6       ;;GFT;**91,102,999,1005,1012,1056**
 +7       ;CALLED FROM ^DIL
 +8        DO XDUY
           SET %=$PIECE(X,U,2)
           if %["Cm"&(W[";W")
               SET %="w"_%
           if %["W"
               GOTO WP
           if %["m"
               GOTO M
           if $DATA(DCL(DP_U_+W))
               GOTO STATS^DIL1
           if W[";N"
               GOTO N
 +9        IF W[";W"
               Begin DoDot:1
 +10               NEW %,DNP
                   SET DNP=1
                   DO EN^DILL(DP,+W,1)
               End DoDot:1
               SET D1=$SELECT(%["C":Y,1:$PIECE(" S Y=",U,Y'?1" ".E)_Y_" S X=Y")
               DO W
               SET Y=Y_D1_" D ^DIWP"
               QUIT 
 +11       DO EN^DILL(DP,+W,1)
DN        ;
 +1        IF W[";X"
               Begin DoDot:1
 +2                SET DE=$SELECT(W[";C"!(W[";S"):DE,$ASCII(Y)-32:" W ?0",1:"")
 +3                IF $LENGTH(DE)+$LENGTH(Y)>250
                       Begin DoDot:2
 +4                        SET %=Y
                           SET Y=DE
                           SET DE=%
                           DO PX^DIL
                           SET Y=DE
                       End DoDot:2
 +5               IF '$TEST
                       SET Y=DE_Y
 +6                IF $DATA(DIWR(DM))
                       DO DIWR
               End DoDot:1
               QUIT 
DNW        if DHD!$GET(DIOSUBHD)
               DO H
           IF DG+DLN>IOM
               IF DG
                   KILL ^UTILITY("DIL",$JOB,DG)
                   SET DG='%*DM*2+2
                   SET DE=$PIECE(W,";C",2)
                   SET DG=$SELECT(DE>0:DE-1,DE<0:IOM+DE,DG+DLN'>IOM!(W[";W"):DG,DLN>IOM:0,1:IOM-DLN)
                   SET DE=" D T Q:'DN  W ?"_DG
                   DO W^DIL
                   if DHD!$GET(DIOSUBHD)
                       DO H
 +1        SET DG=2+DLN+DG
           if $DATA(DNP)
               QUIT 
           IF $LENGTH(DE)+$LENGTH(Y)>250
               SET %=Y
               SET Y=DE
               SET DE=%
               DO PX^DIL
               SET Y=DE
               QUIT 
 +2        SET Y=DE_Y
           QUIT 
 +3       ;
H         ;V will be COLUMN HEADER
           SET V=$PIECE(X,U)
           SET Z=99
           SET I=$FIND(W,";""")
           IF I>0
               if $EXTRACT(W,I-4,I)=";Z;"""""
                   QUIT 
               SET I=$PIECE(W,";""",2)
               SET V=$$CONVQQ^DILIBF($PIECE(I,"""",1,$LENGTH(I,"""")-1))
HEAD      ;Grab the next 'word'.  Column width may have to be increased for a long word
           if V=""
               QUIT 
           SET I=$PIECE(V," ")
           IF $LENGTH(I)>DLN
               SET DLN=$LENGTH(I)
XD         SET V=$PIECE(V," ",2,99)
           SET D=$PIECE(V," ")
           IF D]""
               IF $LENGTH(I)+$LENGTH(D)<DLN
                   SET I=I_" "_D
                   GOTO XD
 +1        SET ^UTILITY("DIL",$JOB,DG,Z)=$JUSTIFY(I,DRJ*DLN)
           SET V(Z)=""
           SET Z=Z-1
           GOTO HEAD
 +2       ;
XDUY      ;
 +1        IF '$DATA(^DD(DP,+W,0))
               SET X=""
               SET DU=0
               SET Y=0
               QUIT 
 +2        SET X=^(0)
           SET DU=$PIECE(X,U,4)
           SET Y=$PIECE(DU,";",2)
           SET DU=$PIECE(DU,";")
           IF W[";T"
               IF $DATA(^(.1))
                   SET X=^(.1)_U_$PIECE(X,U,2,99)
EGP       ;**FIELD LABEL FOR OUTPUT HEADING
          IF '$TEST
               SET $PIECE(X,U)=$$LABEL^DIALOGZ(DP,+W)
 +1        if +DU'=DU
               SET DU=""""_DU_""""
 +2        IF Y
               SET Y="$P(X,U,"_Y_")"
               QUIT 
 +3        IF Y=""
               SET Y="D"_DM
               QUIT 
 +4        SET Y=$EXTRACT(Y,2,9)
           if $PIECE(Y,",",2)=+Y
               SET Y=+Y
           SET Y="$E(X,"_Y_")"
           QUIT 
 +5       ;
WR        ;
 +1        KILL DLN
           DO W^DILL
W          SET DRJ=0
           SET DIWL=DIWL+1
           IF '$DATA(DLN)
               SET %=IOM-DG
               SET DLN=$SELECT(%>20:%,1:IOM)-2
 +1        if W[";X"
               SET $PIECE(X,U)=""
           DO DNW
           SET %=$PIECE(DE,"W ?",2)+1
           SET Y=DLN+%-1
           SET DIO=2
           SET %=" S DIWL="_%_",DIWR="_$SELECT(IOM<Y:IOM,1:Y)
           SET Y=$PIECE(DE," W ?")_%
           QUIT 
 +2       ;
WP        ;COME HERE FOR A W-P TYPE FIELD
           SET DN=%["L"_U
           DO WR
 +1        SET DIO=3
           SET Y=%_" D ^DIWP"
           SET X=F(DM-1)
           IF DHT<0
               SET I=$EXTRACT(^UTILITY("DIPZ",$JOB,X),2,999)
               DO WPX
               SET ^UTILITY("DIPZ",$JOB,X)=" "_I
               QUIT 
 +2        IF $DATA(^UTILITY($JOB,99,X))
               SET I=^(X)
               DO WPX
               SET ^UTILITY($JOB,99,X)=I
               QUIT 
WPX       ;from DIPZ1
 +1       ;'NOWRAP' FUNCTION
           if DN
               SET I=^DD("FUNC",38,1)_" "_I
 +2       ;GFT
           IF DE]""
               SET I=DE_" "_I
 +3        QUIT 
 +4       ;
M          SET D1=" S DICMX=""D "_$EXTRACT("L",%'["w")_"^DIWP"" "_$PIECE(X,U,5,99)
           DO WR
           SET Y=Y_D1
           QUIT 
 +1       ;
N         ;
 +1        SET DCL=DCL+1
           SET DXS="Y"
           SET D=",Y=$$DITTO^DIO2("_DCL_",Y)"
           SET DITTO(DCL)=""
           SET I=""
 +2        IF %["C"
               SET X=X_" S Y=X"_D_" S X=Y"
               GOTO Z
 +3        SET Y=" S Y="_Y_D
Z          DO EN^DILL(DP,+W)
           GOTO DN
 +1       ;
DIWR      ;CALLED FROM ^DIL
 +1        if DHT
               GOTO DIWR^DIPZ1
           IF $DATA(DIWR(DM))
               IF DX=DIWR(DM)
                   SET ^UTILITY($JOB,99,DX)="D A^DIWW"
                   GOTO K
 +2        IF $DATA(DIWR(DM))
               FOR DX=DX+1:1
                   IF '$DATA(^UTILITY($JOB,99,DX))
                       SET ^(DX)="D ^DIWW"
                       DO DX^DIL(DX)
                       GOTO K
 +3        Begin DoDot:1
 +4            FOR I=DM-1:-1:0
                   IF $DATA(DIWR(I))
                       KILL DIWR(I)
                       QUIT 
 +5            IF I
                   SET I=F(I)
 +6           IF '$TEST
                   FOR I=1:1
                       if '$DATA(^UTILITY($JOB,99,I+1))
                           QUIT 
           End DoDot:1
           SET ^UTILITY($JOB,99,I)="D ^DIWW "_^UTILITY($JOB,99,I)
K          KILL DIWR(DM)
           QUIT