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

INHPCO2.m

Go to the documentation of this file.
  1. INHPCO2 ; JKB ; 29 Oct 97 08:58
  1. ;;3.01;BHL IHS Interfaces with GIS;;JUL 01, 2001
  1. ;COPYRIGHT 1991-2000 SAIC
  1. ;;
  1. ;
  1. ;
  1. CONTROLS ; re-index GIS control files
  1. N INFILE
  1. W:$G(INVERBOS) !!,"Re-indexing GIS control files:"
  1. F INFILE="^INRHD(","^INRHNS(","^INRHR(","^INRHS(","^INRHT(","^INTHERL(","^INTHL7F(","^INTHL7FT(","^INTHL7M(","^INTHL7S(","^INTHPC(","^INVD(4090.2," D:$G(INVERBOS) D REINDEX(INFILE)
  1. .N X S X=@(INFILE_"0)")
  1. .W !,$P(X,U)_" (#"_+$P(X,U,2)_") "_$P(X,U,4)_" entries started at "_$P($$CDATASC^%ZTFDT($H,2,3)," ",2)
  1. Q
  1. ;
  1. REINDEX(DIU,INDD) ; kill & re-index all xrefs for a file
  1. ; Input : DIU (req) = file global root in DIC format
  1. ; INDD (opt) = re-index the DD also (boolean)
  1. ; Output: void
  1. ; Note : derived from ^DIU1
  1. N DA,DCNT,DH,DI,DIC,DIK,DV,DW,X,Y
  1. K ^UTILITY("DIK",$J)
  1. S DI=+$P(@(DIU_"0)"),U,2)
  1. ; get xref data and put in ^UTILITY
  1. S X=0,DIK=DIU D DD^DIK
  1. ; loop thru xref data (DW=file#, DV=field#, DH=xref#)
  1. S (X,DW)=0
  1. F S DW=$O(^UTILITY("DIK",$J,DW)) Q:'DW S DV=0 D
  1. .F S DV=$O(^UTILITY("DIK",$J,DW,DV)),DH=0 Q:'DV S DH=0 D
  1. ..F S DH=$O(^UTILITY("DIK",$J,DW,DV,DH)) Q:'DH D
  1. ...; the 6 node designates a non-'re-runnable' xref
  1. ...I $G(^DD(DW,DV,1,DH,6)) Q
  1. ...; move xref data into local X array, incrementing counter
  1. ...S Y=^UTILITY("DIK",$J,DW,DV,DH),X=X+1,X(X)=Y,X(X,0)=DW_U_DV
  1. ...; pick up triggers (they're stored differently by DD^DIK)
  1. ...I $P(Y,U,3)="",'Y,$D(^UTILITY("DIK",$J,DW,DV,DH,0)) S X(X)=^(0)
  1. K ^UTILITY("DIK",$J)
  1. ; if no xrefs, just re-index the DD and quit
  1. I 'X D:$G(INDD) DD(DI) Q
  1. ; loop thru xref info and kill 'regular' xrefs
  1. F X=X:-1:1 S Y=$P(X(X),U,2,9) I Y]"",Y'[U,+X(X)=DI K @(DIK_"Y)"),X(X)
  1. ; set flag to not fire bulletins
  1. S DIK(0)="B"
  1. ; execute delete logic for 'special' xrefs (or all xrefs?)
  1. I $O(X(0)) S X=2,(DA,DCNT)=0 D DIXALL^DIK,CNT^DIK1
  1. ; re-index the file's DD and its data
  1. K X D:$G(INDD) DD(DI) S DIK=DIU D IXALL^DIK
  1. Q
  1. DD(DI) ; clean re-index of the DD
  1. ; Input: DI = file number (do not pass by ref - it is modified)
  1. N DDD S DDD=$O(^DIC(DI))
  1. F D S DI=$O(^DD(DI)) I 'DI!(DI=DDD) Q
  1. .S DIK="^DD(DI,",DA(1)=DI
  1. .; kill the DD xrefs
  1. .K ^DD(DI,"B"),^("GL"),^("IX"),^("RQ"),^("GR"),^("SB")
  1. .; re-index the field definitions
  1. .I $D(^DD(DI,0))#2 D IXALL^DIK