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

XBSIC.m

Go to the documentation of this file.
  1. XBSIC ;IHS/SET/GTH - LIST ID,SP,FD NODES ON SELECTED FILES ; [ 12/05/2002 4:28 PM ]
  1. ;;3.0;IHS/VA UTILITIES;**9**;FEB 07, 1997
  1. ;IHS/SET/GTH XB*3*9 10/29/2002 New Routine.
  1. ; This routine lists the IDENTIFIERS, SPECIFIERS, and
  1. ; CONDITIONALS from selected files.
  1. ;
  1. ; Thanks to E. Don Enos for the original routine in Sep 1997.
  1. ;
  1. START ;
  1. D INIT
  1. Q:XBQFLG
  1. D DBQUE
  1. Q
  1. ;
  1. INIT ; INITIALIZATION
  1. D EN^XBVK("XB")
  1. S (XBBT)=$H,XBJOB=$J
  1. S XBQFLG=1
  1. I '$G(DUZ(2)) W !!,"Your DUZ(2) is not set!",!! Q
  1. I '$G(^AUTTLOC(DUZ(2),0)) W !!,"The site specified in your DUZ(2) does not exist!",!! Q
  1. KILL ^XTMP("XBSIC",XBJOB)
  1. D ^XBKVAR
  1. D ^XBDSET ; get files to check
  1. I '$O(^UTILITY("XBDSET",XBJOB,0)) Q ; quit if no files selected
  1. S XBQFLG=0
  1. Q
  1. ;
  1. DBQUE ; call to XBDBQUE
  1. W !
  1. S DIR(0)="S^P:PRINT Output;B:BROWSE Output on Screen",DIR("A")="Do you wish to",DIR("B")="P"
  1. KILL DA
  1. D ^DIR
  1. KILL DIR
  1. Q:$D(DIRUT)
  1. I Y="B" D BROWSE Q
  1. S XBRP="LIST^XBSIC",XBRC="FILES^XBSIC",XBRX="EOJ^XBSIC",XBNS="XB"
  1. D ^XBDBQUE
  1. Q
  1. ;
  1. BROWSE ;
  1. S XBRP="VIEWR^XBLM(""LIST^XBSIC"")"
  1. S XBRC="FILES^XBSIC",XBRX="EOJ^XBSIC",XBIOP=0
  1. D ^XBDBQUE
  1. Q
  1. ;
  1. FILES ; PROCESS ALL FILES
  1. S XBFILE=0
  1. F S XBFILE=$O(^UTILITY("XBDSET",XBJOB,XBFILE)) Q:'XBFILE D FILE(XBFILE) Q:XBQFLG
  1. Q
  1. ;
  1. FILE(XBFILE) ; PROCESS ONE FILE (CALLED RECURSIVELY)
  1. NEW L,V,W,X,Y
  1. I '$D(ZTQUEUED),'$D(IO("S")),$E(IOST,1,2)="C-" W "."
  1. S ^XTMP("XBSIC",XBJOB,XBFILE,"!")="" ; file marker
  1. F X="FD","ID","SP" D
  1. . I '$D(^DD(XBFILE,0,X)) Q ; quit if no node
  1. . I X="ID",'$O(^DD(XBFILE,0,X,0)) Q ; quit if no real identifier
  1. . S Y=0
  1. . F S Y=$O(^DD(XBFILE,0,X,Y)) Q:Y="" I Y D
  1. .. S V=$G(^DD(XBFILE,0,X,Y)) ; get value & set $ZR
  1. .. I X="SP" S W=$S(V'="":"="_V,1:"") D SET Q
  1. .. I X="ID" S W="" D SET Q
  1. .. S L=""
  1. .. F S L=$O(^DD(XBFILE,0,X,Y,L)) Q:L="" D
  1. ... S V=$G(^DD(XBFILE,0,X,Y,L)) ; get value & set $ZR
  1. ... S W="="_V D SET
  1. ... Q
  1. .. Q
  1. . Q
  1. ;I $P($G(^DD(XBFILE,.01,0)),U,2)["P" S X=^(0) D RECURSE ;ptr chain
  1. I $P($G(^DD(XBFILE,.01,0)),U,2)["P" S X=^(0) I '(XBFILE=+$P($P(X,U,2),"P",2)) D FILE(+$P($P(X,U,2),"P",2))
  1. Q
  1. Q:$G(RECURSE) ; quit if recursing
  1. S XBFLD=.01
  1. F S XBFLD=$O(^DD(XBFILE,XBFLD)) Q:'XBFLD I $D(^(XBFLD,0)) S X=^(0) D
  1. . Q:$P(X,U,2)'["P" ; quit if not pointer
  1. . D RECURSE
  1. . Q
  1. Q
  1. ;
  1. SET ; SET ONE LINE
  1. S ^XTMP("XBSIC",XBJOB,XBFILE,$$LGR^%ZOSV_W)=""
  1. Q
  1. ;
  1. RECURSE ; RECURSE FOR FILES BEING POINTED TO
  1. Q:XBFILE=+$P($P(X,U,2),"P",2) ; quit if self reference
  1. NEW XBFILE,RECURSE
  1. S RECURSE=1
  1. S XBFILE=+$P($P(X,U,2),"P",2)
  1. D FILE
  1. Q
  1. ;
  1. LIST ; LIST OUTPUT
  1. U IO
  1. D HEAD
  1. S XBFILE=0
  1. F S XBFILE=$O(^XTMP("XBSIC",XBJOB,XBFILE)) Q:'XBFILE D Q:XBQFLG
  1. . D F Q:XBQFLG
  1. . W !,?4,XBFILE_" ("_$P($G(^DIC(XBFILE,0)),U)_")",!
  1. . S XBDEV=""
  1. . F S XBDEV=$O(^XTMP("XBSIC",XBJOB,XBFILE,XBDEV)) Q:XBDEV="" D WRITE Q:XBQFLG
  1. . Q
  1. Q
  1. ;
  1. WRITE ; WRITE ONE LINE
  1. Q:XBDEV="!" ; quit if file marker
  1. D F
  1. Q:XBQFLG
  1. W XBDEV,!
  1. Q
  1. ;
  1. F ;Form feed
  1. I ($Y+4)>IOSL D
  1. . I '$D(ZTQUEUED),'$D(IO("S")),$E(IOST,1,2)'="P-" D PAUSE S:$D(DIRUT) XBQFLG=1
  1. . Q:XBQFLG
  1. . W @IOF
  1. . D HEAD
  1. . Q
  1. Q
  1. ;
  1. PAUSE ; PAUSE FOR USER
  1. Q:$E(IOST)'="C"
  1. Q:$D(ZTQUEUED)!'(IOT="TRM")!$D(IO("S"))
  1. S DIR(0)="E",DIR("A")="Press any key to continue"
  1. KILL DIRUT
  1. D ^DIR
  1. KILL DIR
  1. Q
  1. ;
  1. I '$D(ZTQUEUED),'$D(IO("S")),$E(IOST,1,2)="C-" W @IOF
  1. S XBPG=$G(XBPG)+1
  1. W " ID/SP/FD REPORT run at ",$P(^AUTTLOC(DUZ(2),0),U,2)," on ",$$FMTE^XLFDT(DT),?75,$J(XBPG,5),!
  1. W $$REPEAT^XLFSTR("=",80),!
  1. Q
  1. ;
  1. Q Q
  1. ;
  1. EOJ ;
  1. S XBET=$H,XBTS=(86400*($P(XBET,",")-$P(XBBT,",")))+($P(XBET,",",2)-$P(XBBT,",",2)),XBH=+$P(XBTS/3600,"."),XBTS=XBTS-(XBH*3600),XBM=+$P(XBTS/60,"."),XBTS=XBTS-(XBM*60),XBS=XBTS
  1. W !!,"RUN TIME (H.M.S): "_XBH_"."_XBM_"."_XBS,!
  1. KILL ^XTMP("XBSIC",XBJOB)
  1. KILL ^UTILITY("XBDSET",XBJOB)
  1. D EN^XBVK("XB")
  1. Q
  1. ;