| 1 | VALMW3 ; ALB/MJK - Create transport routines for LM;03:39 PM  16 Dec 1992 | 
|---|
| 2 | ;;1;List Manager;;Aug 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | EN ; -- exporter main entry point | 
|---|
| 5 | N VALMSYS,VALMNS,VALMROU,VALMAX | 
|---|
| 6 | S U="^",DTIME=600 K ^UTILITY($J) | 
|---|
| 7 | D HOME^%ZIS | 
|---|
| 8 | W @IOF,!?20,"*** List Template Export Utility ***" | 
|---|
| 9 | I '$$DUZ() G ENQ | 
|---|
| 10 | S VALMSYS=$$OS() I VALMSYS="" G ENQ | 
|---|
| 11 | S VALMNS=$$NS() I VALMNS="" G ENQ | 
|---|
| 12 | S VALMROU=$$ROU(.VALMNS) I VALMROU="" G ENQ | 
|---|
| 13 | S VALMAX=$$MAX() I 'VALMAX G ENQ | 
|---|
| 14 | W !!!,">>> Exporting LIST TEMPLATES with namespace '"_VALMNS_"'." | 
|---|
| 15 | D BLD,FILE(.VALMROU) | 
|---|
| 16 | ENQ Q | 
|---|
| 17 | ; | 
|---|
| 18 | ; | 
|---|
| 19 | DUZ() ; -- check duz and duz(0) | 
|---|
| 20 | I $S('$D(DUZ(0)):1,DUZ(0)'="@":1,1:0) D | 
|---|
| 21 | .W !,"PROGRAMMER ACCESS REQUIRED",! | 
|---|
| 22 | .S Y=0 | 
|---|
| 23 | E  S Y=1 | 
|---|
| 24 | Q Y | 
|---|
| 25 | ; | 
|---|
| 26 | OS() ; -- get os # | 
|---|
| 27 | I $D(^%ZOSF("OS"))#2 D | 
|---|
| 28 | .S Y=+$P(^("OS"),"^",2) | 
|---|
| 29 | E  S Y=0 | 
|---|
| 30 | Q Y | 
|---|
| 31 | ; | 
|---|
| 32 | NS() ; -- ask for namespace | 
|---|
| 33 | NS1 S VALMNS="" | 
|---|
| 34 | W !!,">>> Enter the Name of the Package (2-4 characters): " | 
|---|
| 35 | R X:$S($D(DTIME):DTIME,1:60) G NSQ:"^"[X | 
|---|
| 36 | I X'?1U1.NU!($L(X)>4) D NS^VALMW5 G NS1 | 
|---|
| 37 | S VALMNS="",DIC="^DIC(9.4,",DIC(0)="EZ",D="C" D IX^DIC | 
|---|
| 38 | I Y>0 S SDPK=+Y,VALMNS=$P(Y(0),U,2) | 
|---|
| 39 | S:Y<1!(VALMNS="") VALMNS=$$ADHOC(X) | 
|---|
| 40 | NSQ Q VALMNS | 
|---|
| 41 | ; | 
|---|
| 42 | ROU(VALMNS) ; -- ask for export routine name | 
|---|
| 43 | N ROU,DIR,X,Q | 
|---|
| 44 | ROU1 S VALMROU="" | 
|---|
| 45 | W ! S:$G(VALMNS)]"" DIR("B")=VALMNS_"L" | 
|---|
| 46 | S DIR("A")=">>> Enter Routine Name",DIR(0)="F^2:6^" D ^DIR K DIR | 
|---|
| 47 | G ROUQ:"^"[Y S VALMROU=Y | 
|---|
| 48 | W !!,"I am going to create a series of '",VALMROU,"*' routines." | 
|---|
| 49 | I $D(^%ZOSF("TEST"))#2 X ^("TEST") I  W *7,!,"but '"_VALMROU_"' is ALREADY ON FILE!" S Q=1 | 
|---|
| 50 | W !,"Is that OK" D YN^DICN | 
|---|
| 51 | I %<0!(%=2) S:%=2 VALMROU="" G ROUQ | 
|---|
| 52 | I '% D ROU^VALMW5 G ROU1 | 
|---|
| 53 | ROUQ Q VALMROU | 
|---|
| 54 | ; | 
|---|
| 55 | MAX() ; -- ask for max size of routines | 
|---|
| 56 | N Y | 
|---|
| 57 | MAX1 S Y="" | 
|---|
| 58 | W !!,">>> MAXIMUM ROUTINE SIZE(BYTES): ",^DD("ROU"),"// " | 
|---|
| 59 | R Y:$S($D(DTIME):DTIME,1:60) I '$T G MAXQ | 
|---|
| 60 | S:Y="" Y=^DD("ROU") | 
|---|
| 61 | I Y[U S Y="" G MAXQ | 
|---|
| 62 | I Y\1'=Y!(Y<2000)!(Y>9999) D MAX^VALMW5 G MAX | 
|---|
| 63 | MAXQ Q Y | 
|---|
| 64 | ; | 
|---|
| 65 | ADHOC(X) ; -- pick any namespace | 
|---|
| 66 | L W !!,"Package "_X_" not found" | 
|---|
| 67 | W !,"Please enter the package namespace you wish to export: " | 
|---|
| 68 | R X:300 | 
|---|
| 69 | I '$T!(X="")!(X'?1A.E) S X="" G LQ | 
|---|
| 70 | I $L(X)>4 W !,"Namespace too long" G L | 
|---|
| 71 | LQ Q X | 
|---|
| 72 | ; | 
|---|
| 73 | BLD ; -- build utility | 
|---|
| 74 | N VALMLN,VALMX,VALMNAME,VALM,VALMGLB | 
|---|
| 75 | S VALMLN=0,VALMX=VALMNS | 
|---|
| 76 | F  S VALMX=$O(^SD(409.61,"B",VALMX)) Q:VALMX=""!($E(VALMX,1,$L(VALMNS))'=VALMNS)  S VALM=+$O(^(VALMX,0)) I $D(^SD(409.61,VALM,0)),$P(^(0),U,7) S VALMNAME=$P(^(0),U) D | 
|---|
| 77 | .W !?5,"o  ",VALMNAME | 
|---|
| 78 | .D SET(" W !,""'"_VALMNAME_"' List Template...""") | 
|---|
| 79 | .D SET(" S DA=$O(^SD(409.61,""B"","""_VALMNAME_""",0)),DIK=""^SD(409.61,"" D ^DIK:DA") | 
|---|
| 80 | .D SET(" K DO,DD S DIC(0)=""L"",DIC=""^SD(409.61,"",X="""_VALMNAME_""" D FILE^DICN S VALM=+Y") | 
|---|
| 81 | .D SET(" I VALM>0 D") | 
|---|
| 82 | .; | 
|---|
| 83 | .S VALMGLB="^SD(409.61,"_VALM_",",X=VALMGLB_"-1)" | 
|---|
| 84 | .F  S X=$Q(@X) Q:$E(X,1,$L(VALMGLB))'=VALMGLB  D:X'[",""B""," SET(" .S ^SD(409.61,VALM,"_$P(X,VALMGLB,2,99)_"="""_$$QUOTE(@X)_"""") | 
|---|
| 85 | .; | 
|---|
| 86 | .D SET(" .S DA=VALM,DIK=""^SD(409.61,"" D IX1^DIK K DA,DIK") | 
|---|
| 87 | .D SET(" .W ""Filed.""") | 
|---|
| 88 | .D SET(" ;") | 
|---|
| 89 | D SET(" K DIC,DIK,VALM,X,DA Q") | 
|---|
| 90 | Q3 Q | 
|---|
| 91 | ; | 
|---|
| 92 | SET(X) ; -- set line utility | 
|---|
| 93 | S VALMLN=VALMLN+1,^UTILITY($J,VALMLN,0)=X W "." | 
|---|
| 94 | Q | 
|---|
| 95 | ; | 
|---|
| 96 | QUOTE(X) ; -- add double quotes | 
|---|
| 97 | N P,L | 
|---|
| 98 | S P=1,L=$L(X) | 
|---|
| 99 | F  S P=$F(X,"""",P) Q:'P!(P>(L+1))  S X=$E(X,1,P-1)_""""_$E(X,P,L),L=L+1,P=P+1 | 
|---|
| 100 | Q X | 
|---|
| 101 | ; | 
|---|
| 102 | FILE(VALMROU) ; -- file routines | 
|---|
| 103 | N %H,VALMDATE,VALMNUM,VALMLN | 
|---|
| 104 | S %H=+$H D YX^%DTC | 
|---|
| 105 | S VALMDATE=$E(Y,5,6)_"-"_$E(Y,1,3)_"-"_$E(Y,9,12) | 
|---|
| 106 | S VALMNUM="",VALMLN=0 | 
|---|
| 107 | F  D SAVE(.VALMROU,.VALMNUM,.VALMLN,.VALMDATE) Q:VALMLN=""  S VALMNUM=VALMNUM+1 | 
|---|
| 108 | Q | 
|---|
| 109 | ; | 
|---|
| 110 | SAVE(VALMROU,VALMNUM,VALMLN,VALMDATE) ; -- save to routine | 
|---|
| 111 | N LINE,SIZE | 
|---|
| 112 | K ^UTILITY($J,0) S ^(0,1)=VALMROU_VALMNUM_" ; List Template Exporter ; "_VALMDATE,^(1.1)=" ;; ;",SIZE=0 | 
|---|
| 113 | F LINE=2:1 S VALMLN=$O(^UTILITY($J,VALMLN)) Q:VALMLN=""  S ^UTILITY($J,0,LINE)=^(VALMLN,0),SIZE=$L(^(LINE))+SIZE I $E(^(LINE),1,2)'=" .",SIZE+700>VALMAX Q | 
|---|
| 114 | I VALMLN,$O(^UTILITY($J,VALMLN)) S ^UTILITY($J,0,LINE+1)=" G ^"_VALMROU_(VALMNUM+1) | 
|---|
| 115 | S X=VALMROU_VALMNUM X ^DD("OS",VALMSYS,"ZS") W !,X_" has been filed..." | 
|---|
| 116 | Q | 
|---|
| 117 | ; | 
|---|