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

HLDIEDB0.m

Go to the documentation of this file.
  1. HLDIEDB0 ;CIOFO-O/LJA - Debug Data Display Code ;12/29/03 10:39
  1. ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13,1995
  1. ;
  1. FILEIEN ; Input FILE,IEN to find debug data to display...
  1. N ABORT,CT,DATE,FILE,GBL,GCT,IEN,JOB,LOC,RTN,X
  1. ;
  1. W @IOF,$$CJ^XLFSTR("Debug Data Display by FILE,IEN",IOM)
  1. W !,$$REPEAT^XLFSTR("=",IOM)
  1. ;
  1. I '$D(^XTMP("HLDIE-DEBUGX")) D QUIT ;->
  1. . W !!,"No debug data exists..."
  1. . H 1
  1. ;
  1. S GBL="^XTMP(""HLDIE-DEBUGX"")"
  1. ;
  1. F D QUIT:'FILE ;->
  1. . D SF
  1. . R !!,"Enter FILE#: ",FILE:99 Q:FILE']""!(FILE[U) ;->
  1. . F D QUIT:'IEN ;->
  1. . . D SI(FILE)
  1. . . R !!,"Enter IEN: ",IEN:99 Q:'IEN ;->
  1. . . W !!,?2,"#",?5,"File & IEN",?20,"Date",?35,"Job#",?50,"Rtn",?68,"Debug#"
  1. . . W !,$$REPEAT^XLFSTR("=",IOM)
  1. . . KILL ^TMP($J,"H")
  1. . . S DATE=0,ABORT=0,GCT=0
  1. . . F S DATE=$O(@GBL@(FILE,IEN,DATE)) Q:'DATE!(ABORT) D
  1. . . . S JOB=0
  1. . . . F S JOB=$O(@GBL@(FILE,IEN,DATE,JOB)) Q:'JOB!(ABORT) D
  1. . . . . S RTN=""
  1. . . . . F S RTN=$O(@GBL@(FILE,IEN,DATE,JOB,RTN)) Q:RTN']""!(ABORT) D
  1. . . . . . S LOC=""
  1. . . . . . F S LOC=$O(@GBL@(FILE,IEN,DATE,JOB,RTN,LOC)) Q:LOC']""!(ABORT) D
  1. . . . . . . S GCT=GCT+1
  1. . . . . . . S ^TMP($J,"H",GCT)=DATE_U_JOB_U_RTN_U_LOC
  1. . . . . . . W !,$J(GCT,3),?5,FILE,"[#",IEN,"]",?20,DATE,?35,JOB,?50,RTN,?68,LOC
  1. . . F D QUIT:'GCT
  1. . . . R !!,"Enter #: ",GCT:99 Q:'GCT ;->
  1. . . . S X=$G(^TMP($J,"H",+GCT)),DATE=+X,JOB=$P(X,U,2),RTN=$P(X,U,3),LOC=$P(X,U,4) QUIT:LOC']"" ;->
  1. . . . D INDIV(DATE\1,JOB,RTN,LOC)
  1. . . . W !,$$REPEAT^XLFSTR("-",IOM)
  1. ;
  1. KILL ^TMP($J,"H")
  1. ;
  1. Q
  1. ;
  1. SF ; Show files...
  1. ; GBL -- req
  1. N CT,FILE
  1. W !!,$$CJ^XLFSTR(" Files w/Debug Data ",IOM,"=")
  1. S CT=0,FILE=0
  1. F S FILE=$O(@GBL@(FILE)) Q:'FILE D
  1. . S CT=CT+1 W:CT>1 ", "
  1. . W FILE
  1. W !,$$REPEAT^XLFSTR("-",IOM)
  1. Q
  1. ;
  1. SI(FILE) ; Show IENs for file...
  1. ; GBL -- req
  1. N CT,IEN
  1. W !!,$$CJ^XLFSTR(" IENs w/Debug Data for File# "_FILE_" ",IOM,"=")
  1. S CT=0,IEN=0
  1. F S IEN=$O(@GBL@(FILE,IEN)) Q:'IEN!(CT>100) D
  1. . S CT=CT+1
  1. . W:$X>65 ! W:$X<6 ?6 W:$X>6 ","
  1. . W IEN
  1. I CT>100 D
  1. . W !!,"Some IENs not displayed (because there were too many)..."
  1. . W !,"(The LAST IEN is ",$O(@GBL@(FILE,":"),-1),".)"
  1. W !,$$REPEAT^XLFSTR("-",IOM)
  1. Q
  1. ;
  1. N ABORT,CONT,CT,DATA,FIND,LP,ORIG,POSX,SRCH,ST,X
  1. ;
  1. W @IOF,$$CJ^XLFSTR("Debug Data Display by Global Search",IOM)
  1. W !,$$REPEAT^XLFSTR("=",IOM)
  1. ;
  1. I '$D(^XTMP("HLDIE-DEBUGX")) D QUIT ;->
  1. . W !!,"No debug data exists..."
  1. . H 1
  1. ;
  1. S1 KILL SRCH
  1. ;
  1. F R !!,"Search string: ",SRCH:999 Q:SRCH']""!(SRCH=U) D
  1. . S SRCH($$UP^XLFSTR(SRCH))=""
  1. ;
  1. QUIT:$O(SRCH(""))']"" ;->
  1. ;
  1. W !!,"Searching..."
  1. ;
  1. S CT=0,ABORT=0,CONT=0
  1. ;
  1. S LP="^XTMP(""HLDIE-DEBUF""",ST="^XTMP(""HLDIE-DEBUG",LP=LP_")"
  1. F S LP=$Q(@LP) Q:LP'[ST!(ABORT) D
  1. . S ORIG=@LP,DATA=$$UP^XLFSTR(ORIG),FIND=0,SRCH=""
  1. . F S SRCH=$O(SRCH(SRCH)) Q:SRCH']""!(FIND) D
  1. . . QUIT:DATA'[SRCH&(LP'[SRCH) ;->
  1. . . S FIND=1
  1. . QUIT:'FIND ;->
  1. . W !,LP,"="
  1. . W:$X>55 !,?10,"-> "
  1. . S POSX=$X
  1. . F D QUIT:ORIG']""
  1. . . W:$X>POSX ! W:$X<POSX ?POSX
  1. . . W $E(ORIG,1,IOM-POSX)
  1. . . S ORIG=$E(ORIG,IOM-POSX+1,999)
  1. . QUIT:CONT ;->
  1. . S CT=CT+1 Q:(CT#10) ;->
  1. . W " <-" R X:99 S:X]""&(X'=" ") ABORT=1 S:X=" " CONT=1
  1. ;
  1. I ABORT=1 W !!,"... aborting ..."
  1. ;
  1. G S1 ;->
  1. ;
  1. API ; Select RTN & SUBRTN to find & show debug data...
  1. N DATE,FILE,MAX,NUM,RTN,SUB
  1. ;
  1. W @IOF,$$CJ^XLFSTR("Debug Data Display by API Call",IOM)
  1. W !,$$REPEAT^XLFSTR("=",IOM)
  1. ;
  1. I '$D(^XTMP("HLDIE-DEBUGX")) D QUIT ;->
  1. . W !!,"No debug data exists..."
  1. . H 1
  1. ;
  1. W !
  1. D COLLECT
  1. D SHOW
  1. ;
  1. R1 R !!,"File: ",FILE:99 QUIT:FILE']"" ;->
  1. I '$D(^XTMP("HLDIE-DEBUGX",FILE)) D G R1 ;->
  1. . W " no data..."
  1. ;
  1. R !,"Rtn: ",RTN:99 G:RTN']"" R1 ;->
  1. R !,"Subrtn: ",SUB:99 G:SUB']"" R1 ;->
  1. S RTN=RTN_"~"_SUB
  1. ;
  1. R !,"Max#: 20// ",MAX:99 S:MAX']"" MAX=20
  1. S MAX=$S(MAX:MAX,1:20)
  1. ;
  1. F D QUIT:DATE']"" ;->
  1. . KILL ^TMP($J,"R")
  1. . R !!,"Enter Date/time (FM): ",DATE:99 QUIT:DATE']"" ;->
  1. . I DATE'?7N.E W " invalid format..." QUIT ;->
  1. .
  1. . W !
  1. . D SHOWDT(FILE,DATE,RTN,MAX)
  1. . QUIT:'$D(^TMP($J,"R")) ;->
  1. .
  1. . F D QUIT:NUM']""!(NUM[U)
  1. . . R !!,"Enter # to display: ",NUM:99 Q:NUM']""!(NUM[U) ;->
  1. . . I '$D(^TMP($J,"R",NUM)) D QUIT ;->
  1. . . . W " entry not found..."
  1. . . D SHOWONE(+NUM)
  1. ;
  1. H 2
  1. ;
  1. D SHOW
  1. ;
  1. G R1 ;->
  1. ;
  1. SHOWONE(NUM) ; REquires ^TMP($J,"R",NUM)
  1. N DATA,DATE,FILE,IEN,JOB,LOC,RTN
  1. ;
  1. S DATA=^TMP($J,"R",NUM)
  1. ;
  1. S FILE=+DATA,IEN=$P(DATA,U,2),DATE=$P(DATA,U,3)\1
  1. S JOB=$P(DATA,U,4),RTN=$P(DATA,U,5),LOC=$P(DATA,U,6)
  1. ;
  1. D INDIV(DATE,JOB,RTN,LOC)
  1. ;
  1. Q
  1. ;
  1. INDIV(DATE,JOB,RTN,LOC) ; Display entry's data from ^XTMP global...
  1. N LP,REF,ST
  1. ;
  1. S LP="^XTMP(""HLDIE-DEBUG-"_DATE_""","_JOB_","""_RTN_""","_LOC
  1. S ST=LP,LP=LP_")"
  1. ;
  1. W !!,"...",$P(LP,"^XTMP(""HLDIE-DEBUG-"_DATE,2),"="
  1. D SDATA($X,$G(@LP))
  1. ;
  1. F S LP=$Q(@LP) Q:LP'[ST D
  1. . S REF=$P(LP,"^XTMP(""HLDIE-DEBUG-"_DATE,2)_"="
  1. . W !,"...",REF
  1. . D SDATA($X,@LP)
  1. ;
  1. W !
  1. ;
  1. Q
  1. ;
  1. SDATA(POSX,DATA) ; Show data...
  1. ;
  1. F D Q:DATA']""
  1. . QUIT:DATA']"" ;->
  1. . W:$X>POSX ! W:$X<POSX ?POSX
  1. . W $E(DATA,1,IOM-POSX)
  1. . S DATA=$E(DATA,IOM-POSX+1,999)
  1. ;
  1. Q
  1. ;
  1. SHOWDT(FILE,DATE,RTN,MAX) ; Show entries and create ^TMP($J,"R")...
  1. N ABORT,CT,DATA,GBL,IEN,JOB,JOBLAST,LDT,NO,NUM
  1. ;
  1. S GBL="^XTMP(""HLDIE-DEBUGX"","_FILE_")"
  1. ;
  1. D SHOWDTHD
  1. ;
  1. S IEN=0,CT=0,ABORT=0,JOBLAST=""
  1. F S IEN=$O(@GBL@(IEN)) Q:'IEN!(CT'<MAX) D
  1. . S LDT=DATE-.0000000001
  1. . F S LDT=$O(@GBL@(IEN,LDT)) Q:'LDT D
  1. . . S JOB=0
  1. . . F S JOB=$O(@GBL@(IEN,LDT,JOB)) Q:JOB'>0 D
  1. . . . S NO=$O(@GBL@(IEN,LDT,JOB,RTN,":"),-1)/2\1 QUIT:'NO ;->
  1. . . . S NUM=0
  1. . . . F S NUM=$O(@GBL@(IEN,LDT,JOB,RTN,NUM)) Q:'NUM D
  1. . . . . S CT=CT+1
  1. . . . . S DATA=$G(@GBL@(IEN,LDT,JOB,RTN,NUM))
  1. . . . . S ^TMP($J,"R",CT)=FILE_U_IEN_U_LDT_U_JOB_U_RTN_U_NUM
  1. . . . . I JOBLAST'=""&(JOBLAST) W ! S JOBLAST=0
  1. . . . . D EADTHD(CT,FILE,IEN,LDT,JOB,RTN,NUM,+DATA)
  1. . . . S JOBLAST=JOB
  1. ;
  1. Q
  1. ;
  1. EADTHD(CT,FILE,IEN,LDT,JOB,RTN,NUM,LOC) ;
  1. W !,$J(CT,3),?5,FILE,?15,+IEN,?25,"@",$P(LDT,".",2)
  1. W ?35,JOB,?50,RTN,?70,LOC,$S(LOC=1:"<-Beg",1:"")
  1. Q
  1. ;
  1. SHOWDTHD ;
  1. W !!,"#",?5,"File",?15,"IEN",?25,"Time",?35,"Job#",?50,"Location"
  1. W ?70,"Call#"
  1. W !,$$REPEAT^XLFSTR("=",IOM)
  1. Q
  1. ;
  1. SHOW ;
  1. N CT,DATE,FILE,RTN
  1. ;
  1. W !!,"File",?17,"Date",?40,"API"
  1. W !,$$REPEAT^XLFSTR("=",IOM)
  1. ;
  1. S FILE=0
  1. F S FILE=$O(^TMP($J,"D",FILE)) Q:'FILE D
  1. . W !,FILE," [#",^TMP($J,"D",FILE),"]"
  1. . S DATE=0
  1. . F S DATE=$O(^TMP($J,"D",FILE,DATE)) Q:'DATE D
  1. . . W:$X>17 ! W:$X<17 ?17
  1. . . W DATE," [#",^TMP($J,"D",FILE,DATE),"]"
  1. . . S RTN=""
  1. . . F S RTN=$O(^TMP($J,"D",FILE,DATE,RTN)) Q:RTN']"" D
  1. . . . W:$X>40 ! W:$X<40 ?40
  1. . . . W RTN," [#",^TMP($J,"D",FILE,DATE,RTN),"]"
  1. ;
  1. Q
  1. ;
  1. COLLECT ; Collect data into ^TMP($J,"D")...
  1. N DATE,FILE,IEN,JOB,LOC,RTN
  1. ;
  1. KILL ^TMP($J)
  1. ;
  1. S FILE=0
  1. F S FILE=$O(^XTMP("HLDIE-DEBUGX",FILE)) QUIT:'FILE D
  1. . S IEN=0
  1. . F S IEN=$O(^XTMP("HLDIE-DEBUGX",FILE,IEN)) Q:'IEN D
  1. . . S DATE=0
  1. . . F S DATE=$O(^XTMP("HLDIE-DEBUGX",FILE,IEN,DATE)) Q:'DATE D
  1. . . . ; HLDIE-DEBUGX data hangs around longer...
  1. . . . QUIT:'$D(^XTMP("HLDIE-DEBUG-"_(DATE\1))) ;->
  1. . . . S JOB=0
  1. . . . F S JOB=$O(^XTMP("HLDIE-DEBUGX",FILE,IEN,DATE,JOB)) Q:'JOB D
  1. . . . . S RTN=""
  1. . . . . F S RTN=$O(^XTMP("HLDIE-DEBUGX",FILE,IEN,DATE,JOB,RTN)) Q:RTN']"" D
  1. . . . . . S LOC=0
  1. . . . . . F S LOC=$O(^XTMP("HLDIE-DEBUGX",FILE,IEN,DATE,JOB,RTN,LOC)) Q:'LOC D
  1. . . . . . . D COLL1(FILE,IEN,DATE\1,JOB,RTN,LOC)
  1. ;
  1. Q
  1. ;
  1. COLL1(FILE,IEN,DATE,JOB,RTN,LOC) ; Called by COLLECT...
  1. ;
  1. S ^TMP($J,"D",FILE)=$G(^TMP($J,"D",FILE))+1
  1. S ^TMP($J,"D",FILE,DATE)=$G(^TMP($J,"D",FILE,DATE))+1
  1. S ^TMP($J,"D",FILE,DATE,RTN)=$G(^TMP($J,"D",FILE,DATE,RTN))+1
  1. ;
  1. Q
  1. ;
  1. ONLYASC(TXT) ; Return ASCII only. No CTRL characters...
  1. N ASCII,CHAR,NTXT,POS
  1. S NTXT=""
  1. F POS=1:1:$L(TXT) D
  1. . S CHAR=$E(TXT,+POS),ASCII=$A(CHAR)
  1. . I ASCII<32 S CHAR="{"_ASCII_"}"
  1. . S NTXT=NTXT_CHAR
  1. QUIT NTXT
  1. ;
  1. EOR ;HLDIEDBO - Direct 772 & 773 Sets DEBUG CODE ; 11/18/2003 11:17