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

INHSYS03.m

Go to the documentation of this file.
  1. INHSYS03 ;slt; 2 Oct 95 14:44;System Configuration data utility cont.
  1. ;;3.01;BHL IHS Interfaces with GIS;;JUL 01, 2001
  1. ;COPYRIGHT 1991-2000 SAIC
  1. Q
  1. ;
  1. RSLV(INREPRT) ;resolve pointer fields to .01 values
  1. ; Input:
  1. ; INREPRT - 0 - No Report
  1. ; 1 - Display Report
  1. ;local:
  1. ; %LINE - a single line from XRF^INHSYSUT line-tag
  1. ; %FILE - the source file number
  1. ; %FLD - the source field number
  1. ; %FLDS - a string of ";" delimited field numbers
  1. ; %LEN - the number of fields to process
  1. ; %SFL - sub file number
  1. ; %SFLD - sub field number
  1. ; %Z0 - zero node from ^DD(%FILE,%FLD,
  1. ;
  1. N %LINE,%FILE,%FLD,I,J,%FLDS,%LEN,%SFL,%SFLD,%Z0,%FND,%NDPC,%PTO,%FILES,AA
  1. S %FND=""
  1. I INREPRT D HEAD(2)
  1. D XRF^INHSYSUT(.%FILES)
  1. F AA=1:1 S %FILE=$P(%FILES,U,AA) Q:%FILE="" D
  1. .S %FLDS=%FILES(%FILE),%LEN=$L(%FLDS,";")
  1. .;get one DD field at a time
  1. .F J=1:1:%LEN S %FLD=$P(%FLDS,";",J) I %FLD'="" D
  1. ..;if multiple
  1. ..I %FLD[":" D SUBFLD(%FILE,%FLD) Q
  1. ..S %Z0=$G(^DD(%FILE,%FLD,0)) Q:%Z0=""
  1. ..F K="2^%PTO","4^%NDPC" S @$P(K,U,2)=$P(%Z0,U,$P(K,U))
  1. ..;resolve ptr values
  1. ..D FLD(%PTO,%NDPC,.%FND,%FILE,%FLD)
  1. I INREPRT,%FND W !!,"*** Denotes pointed to file not put in package.",!!
  1. Q
  1. EXPAND(INREPRT) ;Expand pointer values
  1. ; Input:
  1. ; INREPRT - 0 - No Report
  1. ; 1 - Display Report
  1. N INFL,INIEN,%ROOT,%FND
  1. I INREPRT D HEAD(2)
  1. F INFL=4012,4005,4011,4000,4004,4010,4090.2,4020,4006 D Q:INPOP
  1. .S INIEN="0"
  1. .F S INIEN=$O(^UTILITY($J,INFL,INIEN)) Q:'INIEN D Q:INPOP
  1. ..S %ROOT=^DIC(INFL,0,"GL"),%FND=0
  1. ..D EXPND^INHSYS09(INIEN,INFL,%ROOT,%ROOT_INIEN_",",1,INIEN,INREPRT,INIEN,.%FND)
  1. Q:INPOP I INREPRT,%FND W !!,"*** Denotes pointed to file not put in package.",!!
  1. Q
  1. ;
  1. SUBFLD(%FILE,%FLD) ;sub field processing for multiples
  1. ; %FILE - the source file number
  1. ; %FLD - the source field number
  1. N %SFL,%SFLDS,%SFLD,INL,%Z0,%GBL,%PTO,%NDPC,%ND,%PC,INIEN,INDA,%DIEN
  1. N %GBLN,I,%PTNM,%PGBL
  1. S %SFL=$P(%FLD,":",2),INL=$L(%SFL,",")
  1. S %SFLDS=$P(%SFL,",",2,INL),INL=INL-1
  1. S %SFL=$P(%SFL,","),%FLD=$P(%FLD,":")
  1. F I=1:1:INL S %SFLD=$P(%SFLDS,",",I) D
  1. .S %Z0=^DD(%SFL,%SFLD,0)
  1. .F K="2^%PTO","3^%GBL","4^%NDPC" S @$P(K,U,2)=$P(%Z0,U,$P(K,U))
  1. .S %ND=$P(%NDPC,";"),%PC=$P(%NDPC,";",2)
  1. .S INIEN=""
  1. .F S INIEN=$O(^UTILITY($J,%FILE,INIEN)) Q:'INIEN D
  1. ..S INDA=0
  1. ..F S INDA=$O(^UTILITY($J,%FILE,INIEN,%FLD,INDA)) Q:'INDA D
  1. ...S %DIEN=$P(^(INDA,%ND),U,%PC) Q:'%DIEN
  1. ...S %GBLN="^"_%GBL_%DIEN_",0)"
  1. ...I '$D(@%GBLN),'$D(%PASS) D Q
  1. ....W !,%SFL,?10,$P($G(^DIC(%FILE,0)),U),?38,%FLD," Broken Pointer ",%GBLN
  1. ....W !,$G(^DIC(%FILE,0,"GL"))_INIEN
  1. ...S INP01=$P(@%GBLN,U)
  1. ...S $P(^UTILITY($J,%FILE,INIEN,%FLD,INDA,%ND),U,%PC)=INP01
  1. ...S %PTO=$$NUM^INHUT5(%PTO)
  1. ...I INREPRT D PRINT(%SFL,%FILE,%SFLD,%PTO,INP01,%GBLN,INIEN,.%FND)
  1. Q
  1. FLD(%PTO,%NDPC,%FND,%FILE,%FLD,INOMIT) ;resolve pointer values to .01 text
  1. ; from pointed too file
  1. ;input:
  1. ; %PTO - file pointed to
  1. ; %NDPC - the node;piece
  1. ; %FND - 1 - Target file not in package
  1. ; 0 - Target file in package
  1. ; Site specific files may not be exported. If
  1. ; this is an entry in one of those files, %FND will
  1. ; be equal to one. ex) DEVICE FILE
  1. ; %FILE - the source file number
  1. ; %FLD - the source field number
  1. ; INOMIT - Omit pointer from being transported
  1. ; INOMIT(FILE#,FIELD#)
  1. ;local:
  1. ; %DIEN - the ien to convert to .01
  1. ; %IEN - the source/target file entry ien
  1. ; %ND - node
  1. ; %PC - piece
  1. ; %GBL - source global node
  1. ; INP01 - .01 internal value from source
  1. ; %NP - No pointed file being brought
  1. ;
  1. N %DIEN,%IEN,%ND,%PC,%GBL,INP01,%GBLN,%NP,%PGBL,%PTNM
  1. S %ND=$P(%NDPC,";"),%PC=$P(%NDPC,";",2),%PTO=+$E(%PTO,$F(%PTO,"P"),$L(%PTO))
  1. ;get global being pointed to
  1. S %GBL=^DIC(%PTO,0,"GL")
  1. S %IEN=""
  1. F S %IEN=$O(^UTILITY($J,%FILE,%IEN)) Q:'%IEN D
  1. .S %DIEN=$P($G(^(%IEN,%ND)),U,%PC) Q:'%DIEN
  1. .I $D(INOMIT(%FILE,%FLD)) S $P(^UTILITY($J,%FILE,%IEN,%ND),U,%PC)="" Q
  1. .S %GBLN=%GBL_%DIEN_",0)"
  1. .I '$D(@%GBLN) D Q
  1. ..W !,%FILE,?10,$P($G(^DIC(%FILE,0)),U),?38,%FLD," Broken Pointer ",%GBLN
  1. ..W !,$G(^DIC(%FILE,0,"GL"))_%IEN
  1. .;look at global being pointed to, set UTILITY piece to that value
  1. .S INP01=$P(@%GBLN,U),$P(^UTILITY($J,%FILE,%IEN,%ND),U,%PC)=INP01
  1. .I INREPRT D PRINT(%FILE,%FILE,%FLD,%PTO,INP01,%GBLN,%IEN,.%FND)
  1. Q
  1. PRINT(%SFL,%FILE,%FLD,%PTO,INP01,%GBLN,%IEN,%FND) ;
  1. ; %SFL - the source sub file number
  1. ; %FILE - the source file number
  1. ; %FLD - the source field number
  1. ; %PTO - file pointed to
  1. ; INP01 - .01 internal value from source
  1. ; %GBLN - target global node
  1. ; %IEN - target file entry ien
  1. ; Output: %FND - 1 - Target file not in package
  1. ; 0 - Target file in package
  1. ; Site specific files may not be exported. If
  1. ; this is an entry in one of those files, %FND will
  1. ; be equal to one. ex) DEVICE FILE
  1. N %PGBL,%PTNM,%NP
  1. S %NP="" I '$D(^UTILITY("SVD",$J,%GBLN)) S %NP=" *** ",%FND=1
  1. D PG(2) W !,%SFL,%NP,?10,$P($G(^DIC(%FILE,0)),U),?38,%FLD,?48,%PTO,?56,$P($G(^DIC(%PTO,0)),U)
  1. S %PGBL=$G(^DIC(%FILE,0,"GL"))_%IEN
  1. S %PTNM=$P(@(%PGBL_",0)"),U)
  1. I %FILE=4020 S %PTNM=$P($G(^INRHT(%PTNM,0)),U)
  1. W !,%PGBL_" ",?14,%PTNM,?48,$P(%GBLN,",")_" ",?62,INP01,!
  1. Q
  1. ; Input: %TP - 1 No Target file info
  1. ; 2 Target file info in report
  1. N %,%2,%3
  1. S %="Data",%2="File Name",%3=""
  1. I %TP=2 S %="Points to file",%2="",%3="Ptr ^Root(IEN"
  1. W @IOF
  1. W !!,"File",?10,%2,?38,"Field",?48,%
  1. W !,"^Root(IEN",?48,%3,!
  1. Q
  1. PG(%TP) ;
  1. ; Input: %TP - 1 No Target file info
  1. ; 2 Target file info in report
  1. I IOSL-5'>$Y D
  1. .I $E(IOST)="C",INCR,$$CR^UTSRD(0,IOSL-1)
  1. .D HEAD(%TP)
  1. Q