| [613] | 1 | AAQJSERV ;FGO/JHS; Update TST Patch UCI (#436016) ;01-28-99 [6/6/01 2:41pm]
 | 
|---|
 | 2 |  ;;1.4;AAQJ PATCH RECORD;; May 14, 1999
 | 
|---|
 | 3 |  N CNT,DOMAIN,INSTBY,INSTNAME,PACKAGE,ENV,SITE,START,STOP,VERSION,XMDUZ,XMSER,XMSUB,XMTEXT,XMY
 | 
|---|
 | 4 |  K ^TMP("AAQJRCV",$J),^TMP("AAQJSND",$J) S AAQBY=""
 | 
|---|
 | 5 |  X XMREC I XMER'=0 S ^TMP($J,"AAQJRCV",$J,1)="" D ERR("NO MESSAGE"),CLEANUP Q
 | 
|---|
 | 6 |  S ^TMP("AAQJRCV",$J,1)=XMRG
 | 
|---|
 | 7 |  I $E(XMRG,1,15)="PACKAGE INSTALL" D UNLOAD,PAC,CLEANUP Q
 | 
|---|
 | 8 |  D UNLOAD,ERR("BAD FORMAT"),CLEANUP
 | 
|---|
 | 9 |  Q
 | 
|---|
 | 10 | UNLOAD F CNT=2:1  X XMREC Q:XMER'=0  S ^TMP("AAQJRCV",$J,CNT)=XMRG
 | 
|---|
 | 11 |  Q
 | 
|---|
 | 12 | CLEANUP S XMSER="S."_XQSOP,XMZ=XQMSG D REMSBMSG^XMA1C
 | 
|---|
 | 13 |  K ^TMP("AAQJRCV",$J),XMER,XMREC,XMRG,XMZ,XQMSG,XQSOP
 | 
|---|
 | 14 |  Q
 | 
|---|
 | 15 | PAC ; Extract data from message
 | 
|---|
 | 16 |  S DOMAIN=$P($G(^TMP("AAQJRCV",$J,2)),": ",2)
 | 
|---|
 | 17 |  S PACKAGE=$P($G(^TMP("AAQJRCV",$J,3)),": ",2,99)
 | 
|---|
 | 18 |  S VERSION=$P($G(^TMP("AAQJRCV",$J,4)),": ",2)
 | 
|---|
 | 19 |  S START=$P($G(^TMP("AAQJRCV",$J,5)),": ",2)
 | 
|---|
 | 20 |  S STOP=$P($G(^TMP("AAQJRCV",$J,6)),": ",2)
 | 
|---|
 | 21 |  S ENV=$P($G(^TMP("AAQJRCV",$J,7)),": ",2)
 | 
|---|
 | 22 |  S INSTBY=$P($G(^TMP("AAQJRCV",$J,8)),": ",2)
 | 
|---|
 | 23 |  S INSTNAME=$P($G(^TMP("AAQJRCV",$J,9)),": ",2)
 | 
|---|
 | 24 |  ; Only update sites and applications being tracked
 | 
|---|
 | 25 |  I '$L(DOMAIN) D ERR("NO DOMAIN") Q
 | 
|---|
 | 26 |  I '$L(PACKAGE) D ERR("NO PACKAGE") Q
 | 
|---|
 | 27 |  I 'VERSION D ERR("NO VERSION") Q
 | 
|---|
 | 28 |  I VERSION'[".",VERSION=+VERSION S VERSION=VERSION_".0"
 | 
|---|
 | 29 |  S X=$P($G(^XTV(8989.3,1,0)),U,1) I X="" D ERR("NO DOMAIN NAME") Q
 | 
|---|
 | 30 |  D UCI^%ZOSV S AAQUCI=$P(Y,",",1),AAQDOM=$P(^DIC(4.2,X,0),U,1),AAQDOM="TEST."_AAQDOM
 | 
|---|
 | 31 |  I DOMAIN["MED" S DOMAIN1=$P(DOMAIN,".MED.VA.GOV")
 | 
|---|
 | 32 |  E  S DOMAIN1=$P(DOMAIN,".VA.GOV")
 | 
|---|
 | 33 |  I AAQDOM["MED" S AAQDOM1=$P(AAQDOM,".MED.VA.GOV")
 | 
|---|
 | 34 |  E  S AAQDOM1=$P(AAQDOM,".VA.GOV")
 | 
|---|
 | 35 |  I DOMAIN1'=AAQDOM1 D ERR("WRONG SITE-"_DOMAIN) Q
 | 
|---|
 | 36 |  D FILE
 | 
|---|
 | 37 | EXIT W ! K %,%DT,%Y,AAQBY,AAQCOMM,AAQDOM,AAQDOM1,AAQDT,AAQDUZ,AAQIRM,AAQLOC,AAQMETH,AAQP,AAQPM,AAQPNO,AAQPV,AAQSITN,AAQSYS,AAQT,AAQTM,AAQUCI,AAQUNO,AAQUV,AAQV,AAQVER,AAQX,AAQX1,AAQX12,AAQX2,AAQX3
 | 
|---|
 | 38 |  K D0,DD,DOMAIN1,DR,MSG,XMER,XMREC,XMRG
 | 
|---|
 | 39 |  Q
 | 
|---|
 | 40 | ERR(ERRMSG)  ; Returns an error message to 'Installed by' user
 | 
|---|
 | 41 |  S CNT=0 F  S CNT=$O(^TMP("AAQJRCV",$J,CNT)) Q:CNT<1  S ^TMP("AAQJSND",$J,CNT,0)=^(CNT)
 | 
|---|
 | 42 |  S ^(0)=^TMP("AAQJSND",$J,1,0)_"   ***"_ERRMSG_"***"
 | 
|---|
 | 43 |  S XMY(DUZ)="",XMDUZ="Patch Updating Error",XMTEXT="^TMP(""AAQJSND"",$J,",XMSUB=$E("Update Error-"_ERRMSG,1,55)
 | 
|---|
 | 44 |  D ^XMD
 | 
|---|
 | 45 |  Q
 | 
|---|
 | 46 | FILE ; Date is not changed if a date already exists for this Patch
 | 
|---|
 | 47 |  S AAQLOC=0
 | 
|---|
 | 48 |  N DA,DIC,DIE,DLAYGO,DR,X,Y
 | 
|---|
 | 49 |  S AAQP=INSTNAME,X=AAQP Q:$L(X)>50!($L(X)<3)
 | 
|---|
 | 50 |  Q:X'["*"  I X["*" K:$P(X,"*",2,3)'?1.2N1"."1.2N.1(1"V",1"T").2N1"*"1.6N X
 | 
|---|
 | 51 |  G:'$D(X) EXIT
 | 
|---|
 | 52 |  S AAQMETH=$P(ENV,U,5),AAQCOMM=$P(ENV,U,6)
 | 
|---|
 | 53 |  I INSTBY["^" S AAQBY=$P(INSTBY,U),AAQSITN=$P(INSTBY,U,2)
 | 
|---|
 | 54 |  S AAQUV=$P(ENV,U,1)_","_$P(ENV,U,2)
 | 
|---|
 | 55 |  S AAQX1=$P(AAQP,"*",1),AAQX2=$P(AAQP,"*",2) D CHKLOC S AAQX12=AAQX1_"*"_AAQX2
 | 
|---|
 | 56 |  S AAQX3=$P(AAQP,"*",3) I $L(AAQX3)<2 S AAQX3="0"_AAQX3 K DD,DIC,D0
 | 
|---|
 | 57 |  I AAQLOC=1 S AAQX3="L"_AAQX3
 | 
|---|
 | 58 |  I AAQCOMM["TEST v" S AAQVER=$P(AAQCOMM,"TEST v",2),AAQX3=AAQX3_"V"_AAQVER
 | 
|---|
 | 59 |  S X=AAQX12,DIC="^DIZ(437016,",DIC(0)="XM" D ^DIC I +Y>0 S AAQPV=+Y
 | 
|---|
 | 60 |  I '$D(^DIZ(437016,"B",AAQX12)) D
 | 
|---|
 | 61 |  .S X=AAQX12,DIC="^DIZ(437016," S DIC(0)="ML" D FILE^DICN
 | 
|---|
 | 62 |  .S AAQPV=+Y
 | 
|---|
 | 63 |  I $D(^DIZ(437016,AAQPV,1,"B",AAQX3)) S DA=0,DA=$O(^DIZ(437016,AAQPV,1,"B",AAQX3,DA)) Q:DA=""  S AAQPNO=DA,DA(1)=AAQPV,DIC="^DIZ(437016,"_DA(1)_",1," G UPDT
 | 
|---|
 | 64 |  I '$D(^DIZ(437016,AAQPV,1,"B",AAQX3)) D
 | 
|---|
 | 65 |  .S:'$D(^DIZ(437016,AAQPV,1,0)) DIC("P")=$P(^DD(437016,1,0),"^",2)
 | 
|---|
 | 66 |  .S DA(1)=AAQPV,DIC="^DIZ(437016,"_DA(1)_",1,",X=AAQX3,DIC(0)="XL",DLAYGO=437016
 | 
|---|
 | 67 |  .D ^DIC I Y=-1 Q  ;No updating if msg for PKG install or no PKG*VER
 | 
|---|
 | 68 |  .S AAQPNO=+Y
 | 
|---|
 | 69 | UPDT S %DT="FRS",X=STOP D ^%DT S AAQDT=Y
 | 
|---|
 | 70 |  I AAQBY'="" S INSTBY=AAQBY
 | 
|---|
 | 71 |  I '$D(^VA(200,"B",INSTBY)) S AAQIRM="UNK" G CHKUCI
 | 
|---|
 | 72 |  S AAQDUZ=0,AAQDUZ=$O(^VA(200,"B",INSTBY,AAQDUZ)),AAQIRM=$P(^VA(200,AAQDUZ,0),U,2)
 | 
|---|
 | 73 | CHKUCI I '$D(^DIZ(437016,AAQPV,1,AAQPNO,2,0)) S ^(0)="^437016.13S^^" S (AAQUNO,AAQT,AAQV)=0 G SETU
 | 
|---|
 | 74 |  S AAQX=^DIZ(437016,AAQPV,1,AAQPNO,2,0) I ($P(AAQX,U,4)=0)!($P(AAQX,U,4)="") S (AAQUNO,AAQT,AAQV)=0 G SETU
 | 
|---|
 | 75 |  S (AAQT,AAQV,AAQX)=0 F  S AAQX=$O(^DIZ(437016,AAQPV,1,AAQPNO,2,AAQX)) Q:AAQX=""  D
 | 
|---|
 | 76 |  .S AAQSYS=^DIZ(437016,AAQPV,1,AAQPNO,2,AAQX,0)
 | 
|---|
 | 77 |  .I $E(AAQSYS,1,1)="T" S AAQT=AAQT+1
 | 
|---|
 | 78 |  .I $E(AAQSYS,1,1)="V" S AAQV=AAQV+1
 | 
|---|
 | 79 |  I AAQT>0 D ERR("TST ALREADY ON FILE") Q
 | 
|---|
 | 80 | SETU K DD,D0 S AAQSYS="T",DIC="^DIZ(437016,"_AAQPV_",1,"_AAQPNO_",2,",DIC(0)="XLM",X=AAQSYS,DA(1)=AAQPNO,DA(2)=AAQPV D FILE^DICN S AAQUNO=+Y K DIC
 | 
|---|
 | 81 |  S DIE="^DIZ(437016,"_AAQPV_",1,"_AAQPNO_",2,",DA(2)=AAQPV,DA(1)=AAQPNO,DA=AAQUNO,DR="1///^S X=AAQDT;2///^S X=AAQIRM" D ^DIE
 | 
|---|
 | 82 |  G:AAQX2="DBA" LOCK
 | 
|---|
 | 83 |  S AAQPM="PM",DIE="^DIZ(437016,"_AAQPV_",1,",DA(1)=AAQPV,DA=AAQPNO,DR="1.5////^S X=AAQPM" D ^DIE
 | 
|---|
 | 84 | LOCK L -^DIZ(437016,AAQPV,1,AAQPNO,0)
 | 
|---|
 | 85 |  L +^DIZ(437016,1,AAQPNO,0):20 ELSE  S MSG="Unable to post data for Patch"_INSTNAME_" due to record lock." D ERR("RECORD LOCK") Q
 | 
|---|
 | 86 |  Q
 | 
|---|
 | 87 | CHKLOC Q:AAQX1'["Z"
 | 
|---|
 | 88 |  S AAQX1=$P(AAQX1,"Z",1),AAQLOC=1
 | 
|---|
 | 89 |  Q
 | 
|---|