| [613] | 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 |  ;
 | 
|---|