| 1 | HLDIEDB0 ;CIOFO-O/LJA - Debug Data Display Code ;12/29/03 10:39 | 
|---|
| 2 | ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13,1995 | 
|---|
| 3 | ; | 
|---|
| 4 | FILEIEN ; Input FILE,IEN to find debug data to display... | 
|---|
| 5 | N ABORT,CT,DATE,FILE,GBL,GCT,IEN,JOB,LOC,RTN,X | 
|---|
| 6 | ; | 
|---|
| 7 | W @IOF,$$CJ^XLFSTR("Debug Data Display by FILE,IEN",IOM) | 
|---|
| 8 | W !,$$REPEAT^XLFSTR("=",IOM) | 
|---|
| 9 | ; | 
|---|
| 10 | I '$D(^XTMP("HLDIE-DEBUGX")) D  QUIT  ;-> | 
|---|
| 11 | .  W !!,"No debug data exists..." | 
|---|
| 12 | .  H 1 | 
|---|
| 13 | ; | 
|---|
| 14 | S GBL="^XTMP(""HLDIE-DEBUGX"")" | 
|---|
| 15 | ; | 
|---|
| 16 | F  D  QUIT:'FILE  ;-> | 
|---|
| 17 | .  D SF | 
|---|
| 18 | .  R !!,"Enter FILE#: ",FILE:99 Q:FILE']""!(FILE[U)  ;-> | 
|---|
| 19 | .  F  D  QUIT:'IEN  ;-> | 
|---|
| 20 | .  .  D SI(FILE) | 
|---|
| 21 | .  .  R !!,"Enter IEN: ",IEN:99 Q:'IEN  ;-> | 
|---|
| 22 | .  .  W !!,?2,"#",?5,"File & IEN",?20,"Date",?35,"Job#",?50,"Rtn",?68,"Debug#" | 
|---|
| 23 | .  .  W !,$$REPEAT^XLFSTR("=",IOM) | 
|---|
| 24 | .  .  KILL ^TMP($J,"H") | 
|---|
| 25 | .  .  S DATE=0,ABORT=0,GCT=0 | 
|---|
| 26 | .  .  F  S DATE=$O(@GBL@(FILE,IEN,DATE)) Q:'DATE!(ABORT)  D | 
|---|
| 27 | .  .  .  S JOB=0 | 
|---|
| 28 | .  .  .  F  S JOB=$O(@GBL@(FILE,IEN,DATE,JOB)) Q:'JOB!(ABORT)  D | 
|---|
| 29 | .  .  .  .  S RTN="" | 
|---|
| 30 | .  .  .  .  F  S RTN=$O(@GBL@(FILE,IEN,DATE,JOB,RTN)) Q:RTN']""!(ABORT)  D | 
|---|
| 31 | .  .  .  .  .  S LOC="" | 
|---|
| 32 | .  .  .  .  .  F  S LOC=$O(@GBL@(FILE,IEN,DATE,JOB,RTN,LOC)) Q:LOC']""!(ABORT)  D | 
|---|
| 33 | .  .  .  .  .  .  S GCT=GCT+1 | 
|---|
| 34 | .  .  .  .  .  .  S ^TMP($J,"H",GCT)=DATE_U_JOB_U_RTN_U_LOC | 
|---|
| 35 | .  .  .  .  .  .  W !,$J(GCT,3),?5,FILE,"[#",IEN,"]",?20,DATE,?35,JOB,?50,RTN,?68,LOC | 
|---|
| 36 | .  .  F  D  QUIT:'GCT | 
|---|
| 37 | .  .  .  R !!,"Enter #: ",GCT:99 Q:'GCT  ;-> | 
|---|
| 38 | .  .  .  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']""  ;-> | 
|---|
| 39 | .  .  .  D INDIV(DATE\1,JOB,RTN,LOC) | 
|---|
| 40 | .  .  .  W !,$$REPEAT^XLFSTR("-",IOM) | 
|---|
| 41 | ; | 
|---|
| 42 | KILL ^TMP($J,"H") | 
|---|
| 43 | ; | 
|---|
| 44 | Q | 
|---|
| 45 | ; | 
|---|
| 46 | SF ; Show files... | 
|---|
| 47 | ; GBL -- req | 
|---|
| 48 | N CT,FILE | 
|---|
| 49 | W !!,$$CJ^XLFSTR(" Files w/Debug Data ",IOM,"=") | 
|---|
| 50 | S CT=0,FILE=0 | 
|---|
| 51 | F  S FILE=$O(@GBL@(FILE)) Q:'FILE  D | 
|---|
| 52 | .  S CT=CT+1 W:CT>1 ", " | 
|---|
| 53 | .  W FILE | 
|---|
| 54 | W !,$$REPEAT^XLFSTR("-",IOM) | 
|---|
| 55 | Q | 
|---|
| 56 | ; | 
|---|
| 57 | SI(FILE) ; Show IENs for file... | 
|---|
| 58 | ; GBL -- req | 
|---|
| 59 | N CT,IEN | 
|---|
| 60 | W !!,$$CJ^XLFSTR(" IENs w/Debug Data for File# "_FILE_" ",IOM,"=") | 
|---|
| 61 | S CT=0,IEN=0 | 
|---|
| 62 | F  S IEN=$O(@GBL@(FILE,IEN)) Q:'IEN!(CT>100)  D | 
|---|
| 63 | .  S CT=CT+1 | 
|---|
| 64 | .  W:$X>65 ! W:$X<6 ?6 W:$X>6 "," | 
|---|
| 65 | .  W IEN | 
|---|
| 66 | I CT>100 D | 
|---|
| 67 | .  W !!,"Some IENs not displayed (because there were too many)..." | 
|---|
| 68 | .  W !,"(The LAST IEN is ",$O(@GBL@(FILE,":"),-1),".)" | 
|---|
| 69 | W !,$$REPEAT^XLFSTR("-",IOM) | 
|---|
| 70 | Q | 
|---|
| 71 | ; | 
|---|
| 72 | SEARCH ; Search of global data to find & display... | 
|---|
| 73 | N ABORT,CONT,CT,DATA,FIND,LP,ORIG,POSX,SRCH,ST,X | 
|---|
| 74 | ; | 
|---|
| 75 | W @IOF,$$CJ^XLFSTR("Debug Data Display by Global Search",IOM) | 
|---|
| 76 | W !,$$REPEAT^XLFSTR("=",IOM) | 
|---|
| 77 | ; | 
|---|
| 78 | I '$D(^XTMP("HLDIE-DEBUGX")) D  QUIT  ;-> | 
|---|
| 79 | .  W !!,"No debug data exists..." | 
|---|
| 80 | .  H 1 | 
|---|
| 81 | ; | 
|---|
| 82 | S1 KILL SRCH | 
|---|
| 83 | ; | 
|---|
| 84 | F  R !!,"Search string: ",SRCH:999 Q:SRCH']""!(SRCH=U)  D | 
|---|
| 85 | .  S SRCH($$UP^XLFSTR(SRCH))="" | 
|---|
| 86 | ; | 
|---|
| 87 | QUIT:$O(SRCH(""))']""  ;-> | 
|---|
| 88 | ; | 
|---|
| 89 | W !!,"Searching..." | 
|---|
| 90 | ; | 
|---|
| 91 | S CT=0,ABORT=0,CONT=0 | 
|---|
| 92 | ; | 
|---|
| 93 | S LP="^XTMP(""HLDIE-DEBUF""",ST="^XTMP(""HLDIE-DEBUG",LP=LP_")" | 
|---|
| 94 | F  S LP=$Q(@LP) Q:LP'[ST!(ABORT)  D | 
|---|
| 95 | .  S ORIG=@LP,DATA=$$UP^XLFSTR(ORIG),FIND=0,SRCH="" | 
|---|
| 96 | .  F  S SRCH=$O(SRCH(SRCH)) Q:SRCH']""!(FIND)  D | 
|---|
| 97 | .  .  QUIT:DATA'[SRCH&(LP'[SRCH)  ;-> | 
|---|
| 98 | .  .  S FIND=1 | 
|---|
| 99 | .  QUIT:'FIND  ;-> | 
|---|
| 100 | .  W !,LP,"=" | 
|---|
| 101 | .  W:$X>55 !,?10,"-> " | 
|---|
| 102 | .  S POSX=$X | 
|---|
| 103 | .  F  D  QUIT:ORIG']"" | 
|---|
| 104 | .  .  W:$X>POSX ! W:$X<POSX ?POSX | 
|---|
| 105 | .  .  W $E(ORIG,1,IOM-POSX) | 
|---|
| 106 | .  .  S ORIG=$E(ORIG,IOM-POSX+1,999) | 
|---|
| 107 | .  QUIT:CONT  ;-> | 
|---|
| 108 | .  S CT=CT+1 Q:(CT#10)  ;-> | 
|---|
| 109 | .  W " <-" R X:99 S:X]""&(X'=" ") ABORT=1 S:X=" " CONT=1 | 
|---|
| 110 | ; | 
|---|
| 111 | I ABORT=1 W !!,"... aborting ..." | 
|---|
| 112 | ; | 
|---|
| 113 | G S1 ;-> | 
|---|
| 114 | ; | 
|---|
| 115 | API ; Select RTN & SUBRTN to find & show debug data... | 
|---|
| 116 | N DATE,FILE,MAX,NUM,RTN,SUB | 
|---|
| 117 | ; | 
|---|
| 118 | W @IOF,$$CJ^XLFSTR("Debug Data Display by API Call",IOM) | 
|---|
| 119 | W !,$$REPEAT^XLFSTR("=",IOM) | 
|---|
| 120 | ; | 
|---|
| 121 | I '$D(^XTMP("HLDIE-DEBUGX")) D  QUIT  ;-> | 
|---|
| 122 | .  W !!,"No debug data exists..." | 
|---|
| 123 | .  H 1 | 
|---|
| 124 | ; | 
|---|
| 125 | W ! | 
|---|
| 126 | D COLLECT | 
|---|
| 127 | D SHOW | 
|---|
| 128 | ; | 
|---|
| 129 | R1 R !!,"File: ",FILE:99 QUIT:FILE']""  ;-> | 
|---|
| 130 | I '$D(^XTMP("HLDIE-DEBUGX",FILE)) D  G R1 ;-> | 
|---|
| 131 | .  W "  no data..." | 
|---|
| 132 | ; | 
|---|
| 133 | R !,"Rtn: ",RTN:99 G:RTN']"" R1 ;-> | 
|---|
| 134 | R !,"Subrtn: ",SUB:99 G:SUB']"" R1 ;-> | 
|---|
| 135 | S RTN=RTN_"~"_SUB | 
|---|
| 136 | ; | 
|---|
| 137 | R !,"Max#: 20// ",MAX:99 S:MAX']"" MAX=20 | 
|---|
| 138 | S MAX=$S(MAX:MAX,1:20) | 
|---|
| 139 | ; | 
|---|
| 140 | F  D  QUIT:DATE']""  ;-> | 
|---|
| 141 | .  KILL ^TMP($J,"R") | 
|---|
| 142 | .  R !!,"Enter Date/time (FM): ",DATE:99 QUIT:DATE']""  ;-> | 
|---|
| 143 | .  I DATE'?7N.E W " invalid format..." QUIT  ;-> | 
|---|
| 144 | . | 
|---|
| 145 | .  W ! | 
|---|
| 146 | .  D SHOWDT(FILE,DATE,RTN,MAX) | 
|---|
| 147 | .  QUIT:'$D(^TMP($J,"R"))  ;-> | 
|---|
| 148 | . | 
|---|
| 149 | .  F  D  QUIT:NUM']""!(NUM[U) | 
|---|
| 150 | .  .  R !!,"Enter # to display: ",NUM:99 Q:NUM']""!(NUM[U)  ;-> | 
|---|
| 151 | .  .  I '$D(^TMP($J,"R",NUM)) D  QUIT  ;-> | 
|---|
| 152 | .  .  .  W "  entry not found..." | 
|---|
| 153 | .  .  D SHOWONE(+NUM) | 
|---|
| 154 | ; | 
|---|
| 155 | H 2 | 
|---|
| 156 | ; | 
|---|
| 157 | D SHOW | 
|---|
| 158 | ; | 
|---|
| 159 | G R1 ;-> | 
|---|
| 160 | ; | 
|---|
| 161 | SHOWONE(NUM) ; REquires ^TMP($J,"R",NUM) | 
|---|
| 162 | N DATA,DATE,FILE,IEN,JOB,LOC,RTN | 
|---|
| 163 | ; | 
|---|
| 164 | S DATA=^TMP($J,"R",NUM) | 
|---|
| 165 | ; | 
|---|
| 166 | S FILE=+DATA,IEN=$P(DATA,U,2),DATE=$P(DATA,U,3)\1 | 
|---|
| 167 | S JOB=$P(DATA,U,4),RTN=$P(DATA,U,5),LOC=$P(DATA,U,6) | 
|---|
| 168 | ; | 
|---|
| 169 | D INDIV(DATE,JOB,RTN,LOC) | 
|---|
| 170 | ; | 
|---|
| 171 | Q | 
|---|
| 172 | ; | 
|---|
| 173 | INDIV(DATE,JOB,RTN,LOC) ; Display entry's data from ^XTMP global... | 
|---|
| 174 | N LP,REF,ST | 
|---|
| 175 | ; | 
|---|
| 176 | S LP="^XTMP(""HLDIE-DEBUG-"_DATE_""","_JOB_","""_RTN_""","_LOC | 
|---|
| 177 | S ST=LP,LP=LP_")" | 
|---|
| 178 | ; | 
|---|
| 179 | W !!,"...",$P(LP,"^XTMP(""HLDIE-DEBUG-"_DATE,2),"=" | 
|---|
| 180 | D SDATA($X,$G(@LP)) | 
|---|
| 181 | ; | 
|---|
| 182 | F  S LP=$Q(@LP) Q:LP'[ST  D | 
|---|
| 183 | .  S REF=$P(LP,"^XTMP(""HLDIE-DEBUG-"_DATE,2)_"=" | 
|---|
| 184 | .  W !,"...",REF | 
|---|
| 185 | .  D SDATA($X,@LP) | 
|---|
| 186 | ; | 
|---|
| 187 | W ! | 
|---|
| 188 | ; | 
|---|
| 189 | Q | 
|---|
| 190 | ; | 
|---|
| 191 | SDATA(POSX,DATA) ; Show data... | 
|---|
| 192 | ; | 
|---|
| 193 | F  D  Q:DATA']"" | 
|---|
| 194 | .  QUIT:DATA']""  ;-> | 
|---|
| 195 | .  W:$X>POSX ! W:$X<POSX ?POSX | 
|---|
| 196 | .  W $E(DATA,1,IOM-POSX) | 
|---|
| 197 | .  S DATA=$E(DATA,IOM-POSX+1,999) | 
|---|
| 198 | ; | 
|---|
| 199 | Q | 
|---|
| 200 | ; | 
|---|
| 201 | SHOWDT(FILE,DATE,RTN,MAX) ; Show entries and create ^TMP($J,"R")... | 
|---|
| 202 | N ABORT,CT,DATA,GBL,IEN,JOB,JOBLAST,LDT,NO,NUM | 
|---|
| 203 | ; | 
|---|
| 204 | S GBL="^XTMP(""HLDIE-DEBUGX"","_FILE_")" | 
|---|
| 205 | ; | 
|---|
| 206 | D SHOWDTHD | 
|---|
| 207 | ; | 
|---|
| 208 | S IEN=0,CT=0,ABORT=0,JOBLAST="" | 
|---|
| 209 | F  S IEN=$O(@GBL@(IEN)) Q:'IEN!(CT'<MAX)  D | 
|---|
| 210 | .  S LDT=DATE-.0000000001 | 
|---|
| 211 | .  F  S LDT=$O(@GBL@(IEN,LDT)) Q:'LDT  D | 
|---|
| 212 | .  .  S JOB=0 | 
|---|
| 213 | .  .  F  S JOB=$O(@GBL@(IEN,LDT,JOB)) Q:JOB'>0  D | 
|---|
| 214 | .  .  .  S NO=$O(@GBL@(IEN,LDT,JOB,RTN,":"),-1)/2\1 QUIT:'NO  ;-> | 
|---|
| 215 | .  .  .  S NUM=0 | 
|---|
| 216 | .  .  .  F  S NUM=$O(@GBL@(IEN,LDT,JOB,RTN,NUM)) Q:'NUM  D | 
|---|
| 217 | .  .  .  .  S CT=CT+1 | 
|---|
| 218 | .  .  .  .  S DATA=$G(@GBL@(IEN,LDT,JOB,RTN,NUM)) | 
|---|
| 219 | .  .  .  .  S ^TMP($J,"R",CT)=FILE_U_IEN_U_LDT_U_JOB_U_RTN_U_NUM | 
|---|
| 220 | .  .  .  .  I JOBLAST'=""&(JOBLAST) W ! S JOBLAST=0 | 
|---|
| 221 | .  .  .  .  D EADTHD(CT,FILE,IEN,LDT,JOB,RTN,NUM,+DATA) | 
|---|
| 222 | .  .  .  S JOBLAST=JOB | 
|---|
| 223 | ; | 
|---|
| 224 | Q | 
|---|
| 225 | ; | 
|---|
| 226 | EADTHD(CT,FILE,IEN,LDT,JOB,RTN,NUM,LOC) ; | 
|---|
| 227 | W !,$J(CT,3),?5,FILE,?15,+IEN,?25,"@",$P(LDT,".",2) | 
|---|
| 228 | W ?35,JOB,?50,RTN,?70,LOC,$S(LOC=1:"<-Beg",1:"") | 
|---|
| 229 | Q | 
|---|
| 230 | ; | 
|---|
| 231 | SHOWDTHD ; | 
|---|
| 232 | W !!,"#",?5,"File",?15,"IEN",?25,"Time",?35,"Job#",?50,"Location" | 
|---|
| 233 | W ?70,"Call#" | 
|---|
| 234 | W !,$$REPEAT^XLFSTR("=",IOM) | 
|---|
| 235 | Q | 
|---|
| 236 | ; | 
|---|
| 237 | SHOW ; | 
|---|
| 238 | N CT,DATE,FILE,RTN | 
|---|
| 239 | ; | 
|---|
| 240 | W !!,"File",?17,"Date",?40,"API" | 
|---|
| 241 | W !,$$REPEAT^XLFSTR("=",IOM) | 
|---|
| 242 | ; | 
|---|
| 243 | S FILE=0 | 
|---|
| 244 | F  S FILE=$O(^TMP($J,"D",FILE)) Q:'FILE  D | 
|---|
| 245 | .  W !,FILE," [#",^TMP($J,"D",FILE),"]" | 
|---|
| 246 | .  S DATE=0 | 
|---|
| 247 | .  F  S DATE=$O(^TMP($J,"D",FILE,DATE)) Q:'DATE  D | 
|---|
| 248 | .  .  W:$X>17 ! W:$X<17 ?17 | 
|---|
| 249 | .  .  W DATE," [#",^TMP($J,"D",FILE,DATE),"]" | 
|---|
| 250 | .  .  S RTN="" | 
|---|
| 251 | .  .  F  S RTN=$O(^TMP($J,"D",FILE,DATE,RTN)) Q:RTN']""  D | 
|---|
| 252 | .  .  .  W:$X>40 ! W:$X<40 ?40 | 
|---|
| 253 | .  .  .  W RTN," [#",^TMP($J,"D",FILE,DATE,RTN),"]" | 
|---|
| 254 | ; | 
|---|
| 255 | Q | 
|---|
| 256 | ; | 
|---|
| 257 | COLLECT ; Collect data into ^TMP($J,"D")... | 
|---|
| 258 | N DATE,FILE,IEN,JOB,LOC,RTN | 
|---|
| 259 | ; | 
|---|
| 260 | KILL ^TMP($J) | 
|---|
| 261 | ; | 
|---|
| 262 | S FILE=0 | 
|---|
| 263 | F  S FILE=$O(^XTMP("HLDIE-DEBUGX",FILE)) QUIT:'FILE  D | 
|---|
| 264 | .  S IEN=0 | 
|---|
| 265 | .  F  S IEN=$O(^XTMP("HLDIE-DEBUGX",FILE,IEN)) Q:'IEN  D | 
|---|
| 266 | .  .  S DATE=0 | 
|---|
| 267 | .  .  F  S DATE=$O(^XTMP("HLDIE-DEBUGX",FILE,IEN,DATE)) Q:'DATE  D | 
|---|
| 268 | .  .  .  ; HLDIE-DEBUGX data hangs around longer... | 
|---|
| 269 | .  .  .  QUIT:'$D(^XTMP("HLDIE-DEBUG-"_(DATE\1)))  ;-> | 
|---|
| 270 | .  .  .  S JOB=0 | 
|---|
| 271 | .  .  .  F  S JOB=$O(^XTMP("HLDIE-DEBUGX",FILE,IEN,DATE,JOB)) Q:'JOB  D | 
|---|
| 272 | .  .  .  .  S RTN="" | 
|---|
| 273 | .  .  .  .  F  S RTN=$O(^XTMP("HLDIE-DEBUGX",FILE,IEN,DATE,JOB,RTN)) Q:RTN']""  D | 
|---|
| 274 | .  .  .  .  .  S LOC=0 | 
|---|
| 275 | .  .  .  .  .  F  S LOC=$O(^XTMP("HLDIE-DEBUGX",FILE,IEN,DATE,JOB,RTN,LOC)) Q:'LOC  D | 
|---|
| 276 | .  .  .  .  .  .  D COLL1(FILE,IEN,DATE\1,JOB,RTN,LOC) | 
|---|
| 277 | ; | 
|---|
| 278 | Q | 
|---|
| 279 | ; | 
|---|
| 280 | COLL1(FILE,IEN,DATE,JOB,RTN,LOC) ; Called by COLLECT... | 
|---|
| 281 | ; | 
|---|
| 282 | S ^TMP($J,"D",FILE)=$G(^TMP($J,"D",FILE))+1 | 
|---|
| 283 | S ^TMP($J,"D",FILE,DATE)=$G(^TMP($J,"D",FILE,DATE))+1 | 
|---|
| 284 | S ^TMP($J,"D",FILE,DATE,RTN)=$G(^TMP($J,"D",FILE,DATE,RTN))+1 | 
|---|
| 285 | ; | 
|---|
| 286 | Q | 
|---|
| 287 | ; | 
|---|
| 288 | ONLYASC(TXT) ; Return ASCII only. No CTRL characters... | 
|---|
| 289 | N ASCII,CHAR,NTXT,POS | 
|---|
| 290 | S NTXT="" | 
|---|
| 291 | F POS=1:1:$L(TXT) D | 
|---|
| 292 | .  S CHAR=$E(TXT,+POS),ASCII=$A(CHAR) | 
|---|
| 293 | .  I ASCII<32 S CHAR="{"_ASCII_"}" | 
|---|
| 294 | .  S NTXT=NTXT_CHAR | 
|---|
| 295 | QUIT NTXT | 
|---|
| 296 | ; | 
|---|
| 297 | EOR ;HLDIEDBO - Direct 772 & 773 Sets DEBUG CODE ; 11/18/2003 11:17 | 
|---|