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

BGUTRACE.m

Go to the documentation of this file.
  1. BGUTRACE ; IHS/OIT/MJL - DEBUGGING TRACE FACILITY ;
  1. ;;1.5;BGU;;MAY 26, 2005
  1. MAIN ; -- main message processing loop
  1. S BGUMXL=200,BGUAPID=$G(BGUAPID,"OE-2"),BGUTCK=$P(BGUMSG,"TRACE=",2),BGUHIT=$G(BGUHIT)
  1. I BGUTCK'="" D CKPAR Q:'BGUTRACE I 'BGUTCK,BGUAPD2'="" S BGUAPID=BGUAPD2
  1. I $D(BGUTRACE) Q:'BGUTRACE
  1. S BGURTN=BGUTRTN,BGUMSG1=$P(BGUMSG,U,2,999) S:$E(BGUMSG1,$L(BGUMSG1))=U BGUMSG1=$E(BGUMSG1,1,$L(BGUMSG1)-1)
  1. S BGUSTR="" F BGUN=1:1:$L(BGUMSG1,U) S:BGUN>1 BGUSTR=BGUSTR_"," S BGUSTR=BGUSTR_""""_$P(BGUMSG1,U,BGUN)_""""
  1. S BGUSTR=$P(BGURTN,"(",1)_"("_BGUSTR_")"
  1. K BGUMSG1
  1. D TRACE
  1. D KILL
  1. Q
  1. ;
  1. CKPAR ; -- Check parameter string to see if TRACE is turned on or off.
  1. ; TRACE on=1, off=0
  1. ; TRACE = string - turns TRACE on and sets APID = string
  1. ; TRACE = HITS - saves only the buffer string coming from the
  1. ; client
  1. ; - If a string follows HITS then APID is set equal
  1. ; to the string
  1. S BGUTCK=$P($P(BGUTCK,U),";"),BGUTRACE=$S(BGUTCK=0:0,1:1),BGUAPD2=""
  1. I 'BGUTRACE D KILL Q
  1. I 'BGUTCK S BGUHIT=$E(BGUTCK,1,4)="HITS",BGUAPD2=$S('BGUHIT:BGUTCK,$P(BGUTCK,"HITS",2)'="":$P(BGUTCK,"HITS",2),1:"")
  1. Q
  1. ;
  1. TRACE ;
  1. ; Save the following varaibles in ^BGUTRACE for this job:
  1. ; $J
  1. ; APPID -- Application ID
  1. ; BGUBUF -- Buffer string
  1. ; BGUSTR -- Routine that is called by BGUTCPH, along with
  1. ; values of the passed parameters
  1. ; BGUDATA -- Output variable for the remote procedure routines
  1. ;
  1. L +^BGUTRACE(0):10 Q:'$T
  1. S BGUIEN(1)=$P($G(^BGUTRACE(0)),"^",3)+1
  1. ; Save data into ^BGUTRACE(SEQ)
  1. S BGUFDA="BGUFDA(1)"
  1. ; Need to get the APPID field passed in the string from the client
  1. S BGUFDA(1,90061,"+1,",.01)=BGUIEN(1),BGUFDA(1,90061,"+1,",".02")=BGUAPID,BGUFDA(1,90061,"+1,",".03")=$J
  1. D NOW^%DTC S BGUFDA(1,90061,"+1,",".04")=% K %,%H,%I
  1. D UPDATE^DIE("",BGUFDA,"BGUIEN","BGUEMSG")
  1. L -^BGUTRACE(0):1
  1. I BGUTYPE=4 D TRACEGLO Q
  1. ;S BGUY=BGUMSG,BGUN2=.05 D PARSE
  1. S BGUN2=.05 D PARSE(.BGUMSG)
  1. ;I 'BGUHIT S BGUY=BGUSTR,BGUN2=.06 S:$E(BGUY)=U BGUY=$C(30)_BGUY D PARSE S BGUN="" F S BGUN=$O(BGUDATA(BGUN)) Q:BGUN="" S BGUDTA=$S($L(BGUDATA(BGUN))>200:$E(BGUDATA(BGUN),1,200)_"...",1:BGUDATA(BGUN)) S BGUWPD(.07,BGUN)=BGUDTA
  1. I 'BGUHIT S BGUN2=.06 D PARSE(.BGUSTR,$S($E(BGUSTR)=U:$C(30),1:"")) S BGUN="" F S BGUN=$O(BGUDATA(BGUN)) Q:BGUN="" S BGUDTA=$S($L(BGUDATA(BGUN))>200:$E(BGUDATA(BGUN),1,200)_"...",1:BGUDATA(BGUN)) S BGUWPD(.07,BGUN)=BGUDTA
  1. S BGUN=0 F S BGUN=$O(BGUWPD(BGUN)) Q:BGUN="" D WP^DIE(90061,BGUIEN(1)_",",BGUN,"","BGUWPD("_BGUN_")","BGUWMSG")
  1. Q
  1. ;
  1. PARSE(BGUY,BGUZ) ;
  1. S BGUY=$G(BGUZ)_BGUY
  1. S BGUYLN=$L(BGUY),BGUN1=BGUYLN\BGUMXL+(BGUYLN#BGUMXL>0)
  1. F BGUN=1:1:BGUN1 S BGUY1=$E(BGUY,BGUN*BGUMXL-199,BGUN*BGUMXL),BGUWPD(BGUN2,BGUN)=BGUY1
  1. Q
  1. ;
  1. TRACEGLO ;
  1. Q:$G(BGUDATA)=""
  1. K ^BGUWPD($J)
  1. S BGUY=BGUMSG,BGUN2=.05 D PARSEGLO
  1. S BGUGLO=BGUDATA,BGUCK=$P(BGUGLO,")",1),BGUN=1
  1. S:$D(@BGUGLO)>10 ^BGUWPD($J,.07,BGUN)=@BGUGLO,BGUN=2
  1. I 'BGUHIT S BGUY=BGUSTR,BGUN2=.06 S:$E(BGUY)=U BGUY=$C(30)_BGUY D PARSEGLO F S BGUGLO=$Q(@BGUGLO) Q:BGUGLO=""!(BGUGLO'[BGUCK) S ^BGUWPD($J,.07,BGUN)=@BGUGLO,BGUN=BGUN+1
  1. S BGUN=0 F S BGUN=$O(^BGUWPD($J,BGUN)) Q:BGUN="" D WP^DIE(90061,BGUIEN(1)_",",BGUN,"","^BGUWPD("_$J_","_BGUN_")","BGUWMSG")
  1. K ^BGUWPD($J)
  1. Q
  1. PARSEGLO ;
  1. S BGUYLN=$L(BGUY),BGUN1=BGUYLN\BGUMXL+(BGUYLN#BGUMXL>0)
  1. F BGUN=1:1:BGUN1 S BGUY1=$E(BGUY,BGUN*BGUMXL-199,BGUN*BGUMXL),^BGUWPD($J,BGUN2,BGUN)=BGUY1
  1. Q
  1. KILL ;
  1. K BGUAPD2,BGUDTA,BGUEMSG,BGUMXL,BGUFLGS,BGUFDA,BGUFN,BGUIEN,BGUM,BGUMSG1,BGUMSG2,BGUN,BGUN1,BGUN2,BGUREF,BGURTN,BGUSTR,BGUTCK,BGUTCK1,BGUY,BGUY1,BGUYLN,BGUWMSG,BGUWPD,DIC,DIR,BGUGLO,BGUCK
  1. Q