| 1 | TMGXPDI1 ;TMG/kst/Custom version of XPDI1 ;09/17/08
 | 
|---|
| 2 |          ;;1.0;TMG-LIB;**1**;09/17/08
 | 
|---|
| 3 | 
 | 
|---|
| 4 |  ;"Original header:
 | 
|---|
| 5 |  ;"XPDI1   ;SFISC/RSD - Cont of Install Process ;10/28/2002  17:14
 | 
|---|
| 6 |  ;"       ;;8.0;KERNEL;**58,61,95,108,229**;Jul 10, 1995
 | 
|---|
| 7 | 
 | 
|---|
| 8 | LOOK(XPDS,XPDL,InstallName,Msg) ;"Lookup Install
 | 
|---|
| 9 |         ;"Purpose: Lookup into file 9.7, XPDS=DIC("S") for lookup
 | 
|---|
| 10 |         ;"Input: XPDS -- screen for ^DIC
 | 
|---|
| 11 |         ;"       XPDL -- optional.  Something regarding locking record.
 | 
|---|
| 12 |         ;"       InstallName -- optional.  Name of install to auto-search for
 | 
|---|
| 13 |         ;"       Msg -- PASS BY REFERANCE, an OUT PARAMETER
 | 
|---|
| 14 |         ;"              Errors are stored in Msg("ERROR",x)=Message
 | 
|---|
| 15 |         ;"                                   Msg("ERROR")=count of last error
 | 
|---|
| 16 |         ;"              Message are store in Msg(x)=Message
 | 
|---|
| 17 |         ;"              Msg=count of last message+1
 | 
|---|
| 18 |         ;"return 0-fail or ien, XPDT=array of linked builds
 | 
|---|
| 19 | 
 | 
|---|
| 20 |         N DIC,X,Y,XPD,XPDIT,%
 | 
|---|
| 21 |         S DIC="^XPD(9.7,",DIC("S")=$get(XPDS)
 | 
|---|
| 22 |         set InstallName=$get(InstallName)
 | 
|---|
| 23 |         if InstallName'="" do
 | 
|---|
| 24 |         . S DIC(0)="QMZ"
 | 
|---|
| 25 |         . set X=InstallName
 | 
|---|
| 26 |         else  S DIC(0)="QAMZ"
 | 
|---|
| 27 |         D ^DIC
 | 
|---|
| 28 |         Q:Y<0 0
 | 
|---|
| 29 | 
 | 
|---|
| 30 |         I '$G(XPDL) L +^XPD(9.7,+Y,0):0 E  W !,"Being accessed by another user" Q 0
 | 
|---|
| 31 |         S XPD=+Y,XPDIT=0
 | 
|---|
| 32 |         W !!,"This Distribution was loaded on ",$$FMTE^XLFDT($P(Y(0),U,3))," with header of ",!?3,$G(^XPD(9.7,XPD,2)),!
 | 
|---|
| 33 |         W ?3,"It consisted of the following Install(s):",!
 | 
|---|
| 34 |         ;"Build XPDT array
 | 
|---|
| 35 |         I '$D(^XPD(9.7,"ASP",XPD)) D XPDT(1,XPD) Q XPD
 | 
|---|
| 36 |         F  S XPDIT=$O(^XPD(9.7,"ASP",XPD,XPDIT)) Q:'XPDIT  do
 | 
|---|
| 37 |         . S Y=+$O(^(XPDIT,0))
 | 
|---|
| 38 |         . D XPDT(XPDIT,Y)
 | 
|---|
| 39 |         I '$O(XPDT(0)) S XPDQUIT=1 D QUIT(XPD)
 | 
|---|
| 40 |         Q XPD
 | 
|---|
| 41 |         ;
 | 
|---|
| 42 | QUIT(Y) ;unlock ien Y
 | 
|---|
| 43 |         L -^XPD(9.7,+Y) Q
 | 
|---|
| 44 |         ;
 | 
|---|
| 45 | XPDT(P1,P2)     ;Build XPDT array
 | 
|---|
| 46 |         N % S %=$P($G(^XPD(9.7,P2,0)),U)
 | 
|---|
| 47 |         I %="" W:$X ! W "**ERROR in Install, You need to remove the Distribution and reload it**",!  S XPDQUIT=1 Q
 | 
|---|
| 48 |         S XPDT(P1)=P2_U_%,(XPDT("DA",P2),XPDT("NM",%))=P1 W:$X>64 ! W $J(%,15)
 | 
|---|
| 49 |         Q
 | 
|---|
| 50 |         ;
 | 
|---|
| 51 | QUES(XPDA,Option)      ;"install questions; XPDA=ien in file 9.7
 | 
|---|
| 52 |         N XPDANS,XPDFIL,XPDFILN,XPDFILO,XPDFLG,XPDNM,XPDQUES,X,Y
 | 
|---|
| 53 |         S XPDNM=$P(^XPD(9.7,XPDA,0),U) W !!,"Install Questions for ",XPDNM,!
 | 
|---|
| 54 |         ;"pre-init questions
 | 
|---|
| 55 |         D DIR^TMGXPDIQ("PRE",,.Option) I $D(XPDQUIT) D ASKABRT^XPDI Q
 | 
|---|
| 56 |         ;"file install questions
 | 
|---|
| 57 |         S (XPDFIL,XPDFLG)=0
 | 
|---|
| 58 |         F  S XPDFIL=$O(^XTMP("XPDI",XPDA,"FIA",XPDFIL)) Q:'XPDFIL  S X=^(XPDFIL),X(0)=^(XPDFIL,0),X(1)=^(XPDFIL),XPDFILO=^(0,1) D  Q:$D(XPDQUIT)
 | 
|---|
| 59 |         .;"check for DD screening logic
 | 
|---|
| 60 |         .I $G(^(10))]"" N XPDSCR S XPDSCR=^(10) ;^(10) is ref to ^XTMP("XPDI",XPDA,"FIA",XPDFIL,0,10) from prev line
 | 
|---|
| 61 |         .;XPDFILN=file name^global ref^partial DD
 | 
|---|
| 62 |         .;XPDANS=new file^DD screen failed^Data exists^update file name^user
 | 
|---|
| 63 |         .;"doesn't want to update data  1=yes,0=no
 | 
|---|
| 64 |         .S XPDFILN=X_X(0)_U_X(1),XPDANS='($D(^DIC(XPDFIL,0))#2)_"^^"_''$O(@(X(0)_"0)"))
 | 
|---|
| 65 |         .I 'XPDFLG W !,"Incoming Files:" S XPDFLG=1
 | 
|---|
| 66 |         .W ! D DIR^TMGXPDIQ("XPF",XPDFIL_"#",.Option) Q:$D(XPDQUIT)
 | 
|---|
| 67 |         .S:$G(XPDQUES("XPF"_XPDFIL_"#2"))=0 $P(XPDANS,U,5)=1
 | 
|---|
| 68 |         .S ^XTMP("XPDI",XPDA,"FIA",XPDFIL,0,2)=XPDANS
 | 
|---|
| 69 |         .;"kill the answers so we can re-ask for next file
 | 
|---|
| 70 |         .F I=1:1:2 K XPDQUES("XPF"_XPDFIL_"#"_I)
 | 
|---|
| 71 |         ;XPDQUIT is by file questions in previous do loop, set in TMGXPDIQ
 | 
|---|
| 72 |         I $D(XPDQUIT) D ASKABRT^XPDI Q
 | 
|---|
| 73 |         ;"ask for coordinators to incoming mail groups
 | 
|---|
| 74 |         S (XPDFIL,XPDFLG)=0
 | 
|---|
| 75 |         F  S XPDFIL=$O(^XTMP("XPDI",XPDA,"KRN",3.8,XPDFIL)) Q:'XPDFIL  S X=^(XPDFIL,0),Y=$G(^(-1)) D  Q:$D(XPDQUIT)
 | 
|---|
| 76 |         .;XPDANS=Mail Group name
 | 
|---|
| 77 |         .Q:$P(Y,U)=1  ;Don't ask if deleting
 | 
|---|
| 78 |         .S XPDANS=$P(X,U)
 | 
|---|
| 79 |         .I 'XPDFLG W !!,"Incoming Mail Groups:" S XPDFLG=1
 | 
|---|
| 80 |         .W ! D DIR^TMGXPDIQ("XPM",XPDFIL_"#",.Option) Q:$D(XPDQUIT)
 | 
|---|
| 81 |         .;kill the answers so we can re-ask for next MG
 | 
|---|
| 82 |         .K XPDQUES("XPM"_XPDFIL_"#1")
 | 
|---|
| 83 |         .Q
 | 
|---|
| 84 |         I $D(XPDQUIT) D ASKABRT^XPDI Q
 | 
|---|
| 85 |         ;"ask to rebuild menus if Option is added
 | 
|---|
| 86 |         S (XPDFIL,XPDFLG)=0
 | 
|---|
| 87 |         S XPDFIL=$O(^XTMP("XPDI",XPDA,"KRN",19,XPDFIL))  D:XPDFIL
 | 
|---|
| 88 |         .S X=^XTMP("XPDI",XPDA,"KRN",19,XPDFIL,0)
 | 
|---|
| 89 |         .;XPDANS=Menu Rebuild Answer
 | 
|---|
| 90 |         .S XPDANS=$P(X,U)
 | 
|---|
| 91 |         .W ! D DIR^TMGXPDIQ("XPO",,.Option) Q:$D(XPDQUIT)
 | 
|---|
| 92 |         I $D(XPDQUIT) D ASKABRT^XPDI Q
 | 
|---|
| 93 |         ;"post-init questions
 | 
|---|
| 94 |         W ! D DIR^TMGXPDIQ("POS",,.Option) I $D(DIRUT)!$D(XPDQUIT) D ASKABRT^XPDI Q
 | 
|---|
| 95 |         Q
 | 
|---|
| 96 |         ;
 | 
|---|
| 97 | XQSET(XPDA)     ;get options & protocols to disable
 | 
|---|
| 98 |         ;put in ^TMP($J,"XQOO",starting build name)
 | 
|---|
| 99 |         N A,I,X,Y
 | 
|---|
| 100 |         S I=0 F  S I=$O(^XTMP("XPDI",XPDA,"KRN",19,I)) Q:'I  S X=^(I,0),A=^(-1) D
 | 
|---|
| 101 |         .S Y=$O(^DIC(19,"B",$P(X,U),0))
 | 
|---|
| 102 |         .;check that option exist and 0=send,1=delete,3=merge or 5=disable
 | 
|---|
| 103 |         .I Y,$D(^DIC(19,Y,0)),$S('A:1,1:A#2) S ^TMP($J,"XQOO",XPDSET,19,Y)=$P(^(0),U,1,2)
 | 
|---|
| 104 |         S I=0 F  S I=$O(^XTMP("XPDI",XPDA,"KRN",101,I)) Q:'I  S X=^(I,0),A=^(-1) D
 | 
|---|
| 105 |         .S Y=$O(^ORD(101,"B",$P(X,U),0))
 | 
|---|
| 106 |         .I Y,$D(^ORD(101,Y,0)),$S(A=3:1,A=5:1,1:'A) S ^TMP($J,"XQOO",XPDSET,101,Y)=$P(^(0),U,1,2)
 | 
|---|
| 107 |         Q
 | 
|---|
| 108 |         ;XPDIJ need to install XPDIJ now & set routine flag to skip
 | 
|---|
| 109 | XPDIJ   N DIE,XPDA,XCM,XCN,XCS,X
 | 
|---|
| 110 |         S XPDA=XPDIJ,DIE="^XTMP(""XPDI"",XPDIJ,""RTN"",""XPDIJ"",",XCN=0,X="XPDIJ"
 | 
|---|
| 111 |         X ^%ZOSF("SAVE")
 | 
|---|
| 112 |         S XCN=$$RTNUP^XPDUTL("XPDIJ",2)
 | 
|---|
| 113 |         Q
 | 
|---|