Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: XPDIA3

XPDIA3.m

Go to the documentation of this file.
  1. XPDIA3 ;SFISC/RWF - Install Pre/Post Actions for Kernel files cont. ;6/22/06 09:13
  1. ;;8.0;KERNEL;**201,302,393,498,1009,1013,1016**;Jul 10, 1995;Build 5
  1. ;Per VHA Directive 2004-038, this routine should not be modified.
  1. Q
  1. ;^XTMP("XPDI",,XPDA,"KRN",XPDFILE,OLDA) is the global root
  1. ;XPDNM=package name, XPDA=ien in ^XPD(9.6,
  1. ;DA=ien in file, OLDA= ien in ^XTMP
  1. ;
  1. PAR0F2 ;PARAMETER file 8989.5: post. This is a fake entry called from the post of file 8989.51
  1. ;Now load any entries from 8989.5
  1. N XP1,XP2,XP3,DIK,OLDA,DA,ERR,PN,PE,PT,ROOT
  1. S XP1=$O(^XTMP("XPDI",XPDA,"PKG",0)) ;Get the package
  1. Q:'XP1 S PN=$G(^XTMP("XPDI",XPDA,"PKG",XP1,0))
  1. S PE=$$FIND1^DIC(9.4,,"MX",$P(PN,U,2)) ;Get the IEN of the package
  1. S OLDA=0,ROOT=$NA(^XTMP("XPDI",XPDA,"KRN",8989.5))
  1. F S OLDA=$O(@ROOT@(OLDA)) Q:'OLDA D
  1. . S XP1=@ROOT@(OLDA,0)
  1. . S $P(XP1,U,1)=PE_";DIC(9.4," ;entity
  1. . S $P(XP1,U,2)=$$LK^XPDIA($NA(^XTV(8989.51)),$P(XP1,U,2))
  1. . S DA=$$LKPAR($P(XP1,U),$P(XP1,U,2),$P(XP1,U,3))
  1. . ;Remove the current entry if we have one
  1. . I DA>0 S DIK="^XTV(8989.5," D ^DIK
  1. . ;Otherwise Add the zero node, See that we have a IEN
  1. . I DA'>0 D ADDPAR($P(XP1,U),$P(XP1,U,2),$P(XP1,U,3)) S DA=$$LKPAR($P(XP1,U),$P(XP1,U,2),$P(XP1,U,3))
  1. . Q:'DA ;don't have a entry
  1. . ;Merge the date ;with IHS fix
  1. . M ^XTV(8989.5,DA)=^XTMP("XPDI",XPDA,"KRN",8989.5,OLDA)
  1. . S ^XTV(8989.5,DA,0)=XP1 ;zero node with new pointers
  1. . ;Get Definition and check if Data Type is pointer, then get pointed to global ref.
  1. . S PT=$G(^XTV(8989.51,+$P(XP1,U,2),1)) D:$P(PT,U)="P"
  1. . . S XP3=$G(^XTV(8989.5,DA,1)),PT=$P(PT,U,2)
  1. . . S:PT $P(XP3,U)=$$FIND1^DIC(PT,"","X",$P(XP3,U)) ;resolve pointer value
  1. . . S:$P(XP3,U) ^XTV(8989.5,DA,1)=XP3
  1. . ;X-ref it
  1. . S DIK="^XTV(8989.5," D IX1^DIK
  1. Q
  1. ;
  1. LKPAR(ENT,PAR,INST) ;Lookup an entry
  1. Q $O(^XTV(8989.5,"AC",PAR,ENT,INST,0))
  1. ;
  1. ADDPAR(ENT,PAR,INST) ;Add a parameter instance
  1. N FDA,FDAIEN,DIERR
  1. S FDA(8989.5,"+1,",.01)=ENT
  1. S FDA(8989.5,"+1,",.02)=PAR
  1. S FDA(8989.5,"+1,",.03)=INST
  1. D UPDATE^DIE("","FDA","FDAIEN","DIERR")
  1. Q
  1. ;
  1. PAR1F1 ;PARAMETER File 8989.51: file Pre
  1. Q
  1. PAR1E1 ;PARAMETER file 8989.51: entry pre
  1. N XP1,XP2,XP3
  1. S ^TMP($J,"XPD",DA)=""
  1. ;if there is a new Description, kill the old Description
  1. K:$O(^XTMP("XPDI",XPDA,"KRN",8989.51,OLDA,20,0)) ^XTV(8989.51,DA,20)
  1. ;Kill any old Allowable entries
  1. K:$O(^XTMP("XPDI",XPDA,"KRN",8989.51,OLDA,30,0)) ^XTV(8989.51,DA,30)
  1. Q
  1. PAR1F2 ;PARAMETER file 8989.51: file post
  1. N XPD,DIK,DA
  1. S DA=0
  1. F S DA=$O(^TMP($J,"XPD",DA)) Q:'DA D
  1. . S DIK="^XTV(8989.51," D IX1^DIK
  1. D PAR0F2 ;Go load the entries from 8989.5
  1. Q
  1. PAR1DEL(RT) ;Delete Parameter Def entries
  1. D DELPTR^XPDUTL1(8989.51,RT) ;Cleanup pointers
  1. D DELIEN^XPDUTL1(8989.51,RT) ;Cleanup entries
  1. Q
  1. ;
  1. PAR2F1 ;PARAMETER File 8989.52: file Pre
  1. K ^TMP($J,"XPD")
  1. Q
  1. PAR2E1 ;PARAMETER file 8989.52: entry Pre
  1. N XP1,XP2,ROOT
  1. S ROOT=$NA(^XTMP("XPDI",XPDA,"KRN",8989.52))
  1. S XP2=$P(@ROOT@(OLDA,0),U,4) ;Use instance of
  1. ;Because we change the transport global see that a restart will work
  1. I $L(XP2),XP2?1A.E S $P(@ROOT@(OLDA,0),U,4)=$$LK^XPDIA($NA(^XTV(8989.51)),XP2)
  1. S XP1=0
  1. F S XP1=$O(@ROOT@(OLDA,10,XP1)),XP2="" Q:'XP1 D
  1. . S XP2=$P(@ROOT@(OLDA,10,XP1,0),U,2) ;Parameter
  1. . I $L(XP2),XP2?1A.E S $P(@ROOT@(OLDA,10,XP1,0),U,2)=$$LK^XPDIA($NA(^XTV(8989.51)),XP2)
  1. . Q
  1. Q
  1. PAR2F2 ;PARAMETER file 8989.52: file Post
  1. Q
  1. PAR2DEL(RT) ;Delete Parameter Templates
  1. D DELIEN^XPDUTL1(8989.52,RT)
  1. Q