- BGUTRACE ; IHS/OIT/MJL - DEBUGGING TRACE FACILITY ;
- ;;1.5;BGU;;MAY 26, 2005
- MAIN ; -- main message processing loop
- S BGUMXL=200,BGUAPID=$G(BGUAPID,"OE-2"),BGUTCK=$P(BGUMSG,"TRACE=",2),BGUHIT=$G(BGUHIT)
- I BGUTCK'="" D CKPAR Q:'BGUTRACE I 'BGUTCK,BGUAPD2'="" S BGUAPID=BGUAPD2
- I $D(BGUTRACE) Q:'BGUTRACE
- S BGURTN=BGUTRTN,BGUMSG1=$P(BGUMSG,U,2,999) S:$E(BGUMSG1,$L(BGUMSG1))=U BGUMSG1=$E(BGUMSG1,1,$L(BGUMSG1)-1)
- S BGUSTR="" F BGUN=1:1:$L(BGUMSG1,U) S:BGUN>1 BGUSTR=BGUSTR_"," S BGUSTR=BGUSTR_""""_$P(BGUMSG1,U,BGUN)_""""
- S BGUSTR=$P(BGURTN,"(",1)_"("_BGUSTR_")"
- K BGUMSG1
- D TRACE
- D KILL
- Q
- ;
- CKPAR ; -- Check parameter string to see if TRACE is turned on or off.
- ; TRACE on=1, off=0
- ; TRACE = string - turns TRACE on and sets APID = string
- ; TRACE = HITS - saves only the buffer string coming from the
- ; client
- ; - If a string follows HITS then APID is set equal
- ; to the string
- S BGUTCK=$P($P(BGUTCK,U),";"),BGUTRACE=$S(BGUTCK=0:0,1:1),BGUAPD2=""
- I 'BGUTRACE D KILL Q
- I 'BGUTCK S BGUHIT=$E(BGUTCK,1,4)="HITS",BGUAPD2=$S('BGUHIT:BGUTCK,$P(BGUTCK,"HITS",2)'="":$P(BGUTCK,"HITS",2),1:"")
- Q
- ;
- TRACE ;
- ; Save the following varaibles in ^BGUTRACE for this job:
- ; $J
- ; APPID -- Application ID
- ; BGUBUF -- Buffer string
- ; BGUSTR -- Routine that is called by BGUTCPH, along with
- ; values of the passed parameters
- ; BGUDATA -- Output variable for the remote procedure routines
- ;
- L +^BGUTRACE(0):10 Q:'$T
- S BGUIEN(1)=$P($G(^BGUTRACE(0)),"^",3)+1
- ; Save data into ^BGUTRACE(SEQ)
- S BGUFDA="BGUFDA(1)"
- ; Need to get the APPID field passed in the string from the client
- S BGUFDA(1,90061,"+1,",.01)=BGUIEN(1),BGUFDA(1,90061,"+1,",".02")=BGUAPID,BGUFDA(1,90061,"+1,",".03")=$J
- D NOW^%DTC S BGUFDA(1,90061,"+1,",".04")=% K %,%H,%I
- D UPDATE^DIE("",BGUFDA,"BGUIEN","BGUEMSG")
- L -^BGUTRACE(0):1
- I BGUTYPE=4 D TRACEGLO Q
- ;S BGUY=BGUMSG,BGUN2=.05 D PARSE
- S BGUN2=.05 D PARSE(.BGUMSG)
- ;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
- 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
- S BGUN=0 F S BGUN=$O(BGUWPD(BGUN)) Q:BGUN="" D WP^DIE(90061,BGUIEN(1)_",",BGUN,"","BGUWPD("_BGUN_")","BGUWMSG")
- Q
- ;
- PARSE(BGUY,BGUZ) ;
- S BGUY=$G(BGUZ)_BGUY
- S BGUYLN=$L(BGUY),BGUN1=BGUYLN\BGUMXL+(BGUYLN#BGUMXL>0)
- F BGUN=1:1:BGUN1 S BGUY1=$E(BGUY,BGUN*BGUMXL-199,BGUN*BGUMXL),BGUWPD(BGUN2,BGUN)=BGUY1
- Q
- ;
- TRACEGLO ;
- Q:$G(BGUDATA)=""
- K ^BGUWPD($J)
- S BGUY=BGUMSG,BGUN2=.05 D PARSEGLO
- S BGUGLO=BGUDATA,BGUCK=$P(BGUGLO,")",1),BGUN=1
- S:$D(@BGUGLO)>10 ^BGUWPD($J,.07,BGUN)=@BGUGLO,BGUN=2
- 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
- S BGUN=0 F S BGUN=$O(^BGUWPD($J,BGUN)) Q:BGUN="" D WP^DIE(90061,BGUIEN(1)_",",BGUN,"","^BGUWPD("_$J_","_BGUN_")","BGUWMSG")
- K ^BGUWPD($J)
- Q
- PARSEGLO ;
- S BGUYLN=$L(BGUY),BGUN1=BGUYLN\BGUMXL+(BGUYLN#BGUMXL>0)
- F BGUN=1:1:BGUN1 S BGUY1=$E(BGUY,BGUN*BGUMXL-199,BGUN*BGUMXL),^BGUWPD($J,BGUN2,BGUN)=BGUY1
- Q
- KILL ;
- 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
- Q
- BGUTRACE ; IHS/OIT/MJL - DEBUGGING TRACE FACILITY ;
- +1 ;;1.5;BGU;;MAY 26, 2005
- MAIN ; -- main message processing loop
- +1 SET BGUMXL=200
- SET BGUAPID=$GET(BGUAPID,"OE-2")
- SET BGUTCK=$PIECE(BGUMSG,"TRACE=",2)
- SET BGUHIT=$GET(BGUHIT)
- +2 IF BGUTCK'=""
- DO CKPAR
- IF 'BGUTRACE
- QUIT
- IF 'BGUTCK
- IF BGUAPD2'=""
- SET BGUAPID=BGUAPD2
- +3 IF $DATA(BGUTRACE)
- IF 'BGUTRACE
- QUIT
- +4 SET BGURTN=BGUTRTN
- SET BGUMSG1=$PIECE(BGUMSG,U,2,999)
- IF $EXTRACT(BGUMSG1,$LENGTH(BGUMSG1))=U
- SET BGUMSG1=$EXTRACT(BGUMSG1,1,$LENGTH(BGUMSG1)-1)
- +5 SET BGUSTR=""
- FOR BGUN=1:1:$LENGTH(BGUMSG1,U)
- IF BGUN>1
- SET BGUSTR=BGUSTR_","
- SET BGUSTR=BGUSTR_""""_$PIECE(BGUMSG1,U,BGUN)_""""
- +6 SET BGUSTR=$PIECE(BGURTN,"(",1)_"("_BGUSTR_")"
- +7 KILL BGUMSG1
- +8 DO TRACE
- +9 DO KILL
- +10 QUIT
- +11 ;
- CKPAR ; -- Check parameter string to see if TRACE is turned on or off.
- +1 ; TRACE on=1, off=0
- +2 ; TRACE = string - turns TRACE on and sets APID = string
- +3 ; TRACE = HITS - saves only the buffer string coming from the
- +4 ; client
- +5 ; - If a string follows HITS then APID is set equal
- +6 ; to the string
- +7 SET BGUTCK=$PIECE($PIECE(BGUTCK,U),";")
- SET BGUTRACE=$SELECT(BGUTCK=0:0,1:1)
- SET BGUAPD2=""
- +8 IF 'BGUTRACE
- DO KILL
- QUIT
- +9 IF 'BGUTCK
- SET BGUHIT=$EXTRACT(BGUTCK,1,4)="HITS"
- SET BGUAPD2=$SELECT('BGUHIT:BGUTCK,$PIECE(BGUTCK,"HITS",2)'="":$PIECE(BGUTCK,"HITS",2),1:"")
- +10 QUIT
- +11 ;
- TRACE ;
- +1 ; Save the following varaibles in ^BGUTRACE for this job:
- +2 ; $J
- +3 ; APPID -- Application ID
- +4 ; BGUBUF -- Buffer string
- +5 ; BGUSTR -- Routine that is called by BGUTCPH, along with
- +6 ; values of the passed parameters
- +7 ; BGUDATA -- Output variable for the remote procedure routines
- +8 ;
- +9 LOCK +^BGUTRACE(0):10
- IF '$TEST
- QUIT
- +10 SET BGUIEN(1)=$PIECE($GET(^BGUTRACE(0)),"^",3)+1
- +11 ; Save data into ^BGUTRACE(SEQ)
- +12 SET BGUFDA="BGUFDA(1)"
- +13 ; Need to get the APPID field passed in the string from the client
- +14 SET BGUFDA(1,90061,"+1,",.01)=BGUIEN(1)
- SET BGUFDA(1,90061,"+1,",".02")=BGUAPID
- SET BGUFDA(1,90061,"+1,",".03")=$JOB
- +15 DO NOW^%DTC
- SET BGUFDA(1,90061,"+1,",".04")=%
- KILL %,%H,%I
- +16 DO UPDATE^DIE("",BGUFDA,"BGUIEN","BGUEMSG")
- +17 LOCK -^BGUTRACE(0):1
- +18 IF BGUTYPE=4
- DO TRACEGLO
- QUIT
- +19 ;S BGUY=BGUMSG,BGUN2=.05 D PARSE
- +20 SET BGUN2=.05
- DO PARSE(.BGUMSG)
- +21 ;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
- +22 IF 'BGUHIT
- SET BGUN2=.06
- DO PARSE(.BGUSTR,$SELECT($EXTRACT(BGUSTR)=U:$CHAR(30),1:""))
- SET BGUN=""
- FOR
- SET BGUN=$ORDER(BGUDATA(BGUN))
- IF BGUN=""
- QUIT
- SET BGUDTA=$SELECT($LENGTH(BGUDATA(BGUN))>200:$EXTRACT(BGUDATA(BGUN),1,200)_"...",1:BGUDATA(BGUN))
- SET BGUWPD(.07,BGUN)=BGUDTA
- +23 SET BGUN=0
- FOR
- SET BGUN=$ORDER(BGUWPD(BGUN))
- IF BGUN=""
- QUIT
- DO WP^DIE(90061,BGUIEN(1)_",",BGUN,"","BGUWPD("_BGUN_")","BGUWMSG")
- +24 QUIT
- +25 ;
- PARSE(BGUY,BGUZ) ;
- +1 SET BGUY=$GET(BGUZ)_BGUY
- +2 SET BGUYLN=$LENGTH(BGUY)
- SET BGUN1=BGUYLN\BGUMXL+(BGUYLN#BGUMXL>0)
- +3 FOR BGUN=1:1:BGUN1
- SET BGUY1=$EXTRACT(BGUY,BGUN*BGUMXL-199,BGUN*BGUMXL)
- SET BGUWPD(BGUN2,BGUN)=BGUY1
- +4 QUIT
- +5 ;
- TRACEGLO ;
- +1 IF $GET(BGUDATA)=""
- QUIT
- +2 KILL ^BGUWPD($JOB)
- +3 SET BGUY=BGUMSG
- SET BGUN2=.05
- DO PARSEGLO
- +4 SET BGUGLO=BGUDATA
- SET BGUCK=$PIECE(BGUGLO,")",1)
- SET BGUN=1
- +5 IF $DATA(@BGUGLO)>10
- SET ^BGUWPD($JOB,.07,BGUN)=@BGUGLO
- SET BGUN=2
- +6 IF 'BGUHIT
- SET BGUY=BGUSTR
- SET BGUN2=.06
- IF $EXTRACT(BGUY)=U
- SET BGUY=$CHAR(30)_BGUY
- DO PARSEGLO
- FOR
- SET BGUGLO=$QUERY(@BGUGLO)
- IF BGUGLO=""!(BGUGLO'[BGUCK)
- QUIT
- SET ^BGUWPD($JOB,.07,BGUN)=@BGUGLO
- SET BGUN=BGUN+1
- +7 SET BGUN=0
- FOR
- SET BGUN=$ORDER(^BGUWPD($JOB,BGUN))
- IF BGUN=""
- QUIT
- DO WP^DIE(90061,BGUIEN(1)_",",BGUN,"","^BGUWPD("_$JOB_","_BGUN_")","BGUWMSG")
- +8 KILL ^BGUWPD($JOB)
- +9 QUIT
- PARSEGLO ;
- +1 SET BGUYLN=$LENGTH(BGUY)
- SET BGUN1=BGUYLN\BGUMXL+(BGUYLN#BGUMXL>0)
- +2 FOR BGUN=1:1:BGUN1
- SET BGUY1=$EXTRACT(BGUY,BGUN*BGUMXL-199,BGUN*BGUMXL)
- SET ^BGUWPD($JOB,BGUN2,BGUN)=BGUY1
- +3 QUIT
- KILL ;
- +1 KILL 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
- +2 QUIT