| 1 | TMGXPDIL ;TMG/kst/Custom version of XPDIGP ;09/17/08
 | 
|---|
| 2 |          ;;1.0;TMG-LIB;**1**;09/17/08
 | 
|---|
| 3 | 
 | 
|---|
| 4 |  ;"Original header:
 | 
|---|
| 5 |  ;"XPDIGP  ;SFISC/RSD - load Global Distribution ; 28 Aug 96 08:52
 | 
|---|
| 6 |  ;"       ;;8.0;KERNEL;**41**;Jul 10, 1995
 | 
|---|
| 7 | 
 | 
|---|
| 8 |         ;XPDT is undefine if PKG^XPDIL1 aborted, need to close device
 | 
|---|
| 9 |         I '$D(XPDT) D ^%ZISC Q
 | 
|---|
| 10 |         N %,XPD,XPDIST,XPDBLD,XPDNM
 | 
|---|
| 11 |         S XPDA=+XPDT(1),XPDNM=$P(XPDT(1),U,2),XPDBLD=$O(^XTMP("XPDI",XPDA,"BLD",0))
 | 
|---|
| 12 |         ;update Install file, read in the other globals, close device
 | 
|---|
| 13 |         D XPCK,GPI:'$G(XPDQUIT),^%ZISC
 | 
|---|
| 14 |         I $G(XPDQUIT) D ABRTALL^XPDI(1) Q
 | 
|---|
| 15 |         ;run post install routine
 | 
|---|
| 16 |         S XPD=$$INRTN^XPDIL1("INIT") I XPD]"" D
 | 
|---|
| 17 |         .;% = routine name only, remove tag
 | 
|---|
| 18 |         .S %=$P(XPD,U,$L(XPD,U)) Q:'$D(^XTMP("XPDI",XPDA,"RTN",%))
 | 
|---|
| 19 |         .W ! D SAVE^XPDIJ(%),BMES^XPDUTL(" Running Post Install routine "_XPD),@XPD
 | 
|---|
| 20 |         .;update Package file
 | 
|---|
| 21 |         ;XPDIST is flag for site tracking, it is set in PKG^XPDIP
 | 
|---|
| 22 |         S XPDIST=0 D BMES^XPDUTL(" Updating KIDS files... "),PKG^XPDIP
 | 
|---|
| 23 |         ;sends site tracking bulletin
 | 
|---|
| 24 |         I XPDIST S %=$$EN^XPDIST(XPDA) D BMES^XPDUTL(" "_$P("NO ",U,'%)_"Install Message sent to FORUM ")
 | 
|---|
| 25 |         W !! D BMES^XPDUTL(" "_XPDNM_" Installed."),STMP^XPDIJ1(17) W !!
 | 
|---|
| 26 |         K ^XTMP("XPDI",XPDA),XPD
 | 
|---|
| 27 |         ;update the status field
 | 
|---|
| 28 |         S XPD(9.7,XPDA_",",.02)=3 D FILE^DIE("","XPD")
 | 
|---|
| 29 |         Q
 | 
|---|
| 30 | 
 | 
|---|
| 31 | DISP(Msg)
 | 
|---|
| 32 |         ;"Purpose: Display the contents
 | 
|---|
| 33 |         ;"Input: Msg -- PASS BY REFERENCE, an OUT PARAMETER.
 | 
|---|
| 34 |         ;"              Message are store in Msg(x)=Message
 | 
|---|
| 35 |         ;"                                   Msg=count of last message+1
 | 
|---|
| 36 |         :"Result: none
 | 
|---|
| 37 | 
 | 
|---|
| 38 |         N X,Y,Z
 | 
|---|
| 39 |         set Msg=$get(Msg,1)
 | 
|---|
| 40 |         set Msg(Msg)="This is a Global Distribution. It contains Global(s) that will",Msg=Msg+1
 | 
|---|
| 41 |         set Msg(Msg)="update your system at this time. The following Global(s) will be installed:",Msg=Msg+1
 | 
|---|
| 42 |         F Y=1:1 S X=$P(XPDGP,"^",Y) Q:X=""  D
 | 
|---|
| 43 |         . S Z=+$P(X,";")
 | 
|---|
| 44 |         . set X=$P(X,";",2)
 | 
|---|
| 45 |         . set XPDT("GP",X)=Z_U_Y
 | 
|---|
| 46 |         . set Msg(Msg)="^"_X_"      "_$P("Overwrite^Replace",U,Z+1)
 | 
|---|
| 47 |         . ;"if unsubscripted global and replacing
 | 
|---|
| 48 |         . if X'["("&Z do
 | 
|---|
| 49 |         . . set Msg(Msg)="**WARNING - Global will be KILLED before install,",Msg=Msg+1
 | 
|---|
| 50 |         . . set Msg(Msg)="Check global protection on ALL systems before continuing.",Msg=Msg+1
 | 
|---|
| 51 |         set Msg(Msg)="If you continue with the Load, the Global(s) will be",Msg=Msg+1
 | 
|---|
| 52 |         set Msg(Msg)="Installed at this time."
 | 
|---|
| 53 |         Q
 | 
|---|
| 54 | 
 | 
|---|
| 55 | GPI     ;global package input
 | 
|---|
| 56 |         N DIRUT,GP,GR,X,XPDSEQ,Y,Z
 | 
|---|
| 57 |         ;start reading the HFS again
 | 
|---|
| 58 |         U IO R X:0,Y:0
 | 
|---|
| 59 |         ;the next read must be the GLOBAL
 | 
|---|
| 60 |         I X'="**GLOBAL**" U IO(0) W !!,"ERROR in HFS file format!" S XPDQUIT=1 Q
 | 
|---|
| 61 |         U IO(0) D BMES^XPDUTL(" "_Y) U IO
 | 
|---|
| 62 |         ;XPDSEQ is the disk sequence number
 | 
|---|
| 63 |         S GP=$P(Y,U,2),GR=$S(Y[")":$E(Y,1,$L(Y)-1)_",",1:Y_"("),XPDSEQ=1
 | 
|---|
| 64 |         K:XPDT("GP",GP) @Y
 | 
|---|
| 65 |         ;X=global ref, Y=global value. DIRUT is when user is prompted for
 | 
|---|
| 66 |         ;next disk in NEXTD and they abort
 | 
|---|
| 67 |         F  R X:0,Y:0 Q:X="**END**"  D  I $D(DIRUT) S XPDQUIT=1 Q
 | 
|---|
| 68 |         .;new global
 | 
|---|
| 69 |         .I X="**GLOBAL**" D  Q
 | 
|---|
| 70 |         ..;completes last global check point
 | 
|---|
| 71 |         ..D XPCOM(GP,Y)
 | 
|---|
| 72 |         ..;reset global ref
 | 
|---|
| 73 |         ..S GP=$P(Y,U,2),GR=$S(Y[")":$E(Y,1,$L(Y)-1)_",",1:Y_"(")
 | 
|---|
| 74 |         ..;kill global if flag is set
 | 
|---|
| 75 |         ..K:XPDT("GP",GP) @Y
 | 
|---|
| 76 |         .I X="**CONTINUE**" D NEXTD^XPDIL Q
 | 
|---|
| 77 |         .S @(GR_X)=Y
 | 
|---|
| 78 |         D XPCOM(GP)
 | 
|---|
| 79 |         U IO(0)
 | 
|---|
| 80 |         Q
 | 
|---|
| 81 |         ;
 | 
|---|
| 82 |         ;create Global multiple of Install file
 | 
|---|
| 83 | XPCK    N DIR,DIRUT,X,XPD,XPDJ,X,Y,Z
 | 
|---|
| 84 |         S DIR(0)="Y",DIR("A")="Globals will now be installed, OK",DIR("B")="YES",DIR("?")="YES will continue with install, NO will abort install"
 | 
|---|
| 85 |         W ! D ^DIR I $D(DIRUT)!'Y S XPDQUIT=1 Q
 | 
|---|
| 86 |         W ! D BMES^XPDUTL(" Install Started for "_XPDNM_" : "),STMP^XPDIJ1(11),BMES^XPDUTL(" Installing Globals:")
 | 
|---|
| 87 |         S X=""
 | 
|---|
| 88 |         F  S X=$O(XPDT("GP",X)) Q:X=""  S Z=$P(XPDT("GP",X),U,2),XPD(9.718,"+"_Z_","_XPDA_",",.01)=X,XPDJ(Z)=Z
 | 
|---|
| 89 |         D:$D(XPD)>9 UPDATE^DIE("S","XPD","XPDJ")
 | 
|---|
| 90 |         Q
 | 
|---|
| 91 |         ;
 | 
|---|
| 92 | XPCOM(X,XPDN)   ;complete checkpoint for global X,XPDN=next global
 | 
|---|
| 93 |         N GR,GP,XPD,Y,Z
 | 
|---|
| 94 |         U IO(0)
 | 
|---|
| 95 |         S Y=$$NOW^XLFDT,Z=+$P(XPDT("GP",X),U,2),XPD(9.718,Z_","_XPDA_",",1)=Y
 | 
|---|
| 96 |         D MES^XPDUTL("               "_$$FMTE^XLFDT(Y)),FILE^DIE("","XPD")
 | 
|---|
| 97 |         D:$L($G(XPDN)) BMES^XPDUTL(" "_XPDN)
 | 
|---|
| 98 |         U IO
 | 
|---|
| 99 |         Q
 | 
|---|