- BGUTRACS ; IHS/OIT/MJL - REMOTE PROCEDURE TESTING ROUTINE ;
- ;;1.5;BGU;;MAY 26, 2005
- D INIT
- F D MAIN Q:BGUDONE
- D END
- Q
- ;
- MAIN ; -- main message processing loop
- S (BGUMSG,X)="",DIC(0)="AQEM" D ASKRPC I Y<0 S BGUDONE=1 D KILL Q
- S DIR(0)="FO" F BGUN=1:1 S DIR("A")="PARAMETER-"_BGUN D ^DIR Q:$D(DIROUT) Q:X="^" D:X=" " USELST S BGUM(BGUN)=X,BGUMSG=BGUMSG_U_X,^TMP("BGUTRACS",$J,"PARAMS",BGUN)=X
- I BGUN=1 S BGUDONE=1 D KILL Q
- S (BGUMSG1,BGUSTR)="" F BGUN=1:1:BGUN-1 S:BGUN>1 BGUMSG1=BGUMSG1_",",BGUSTR=BGUSTR_"," S BGUMSG1=BGUMSG1_"BGUM("_BGUN_")",BGUSTR=BGUSTR_""""_BGUM(BGUN)_""""
- ; -- set up for routine call
- ENT ;
- K X,Y,BGUDATA N DIQUIET
- S BGUREF=^XWB(8994,BGUIEN,0)
- S BGUTRTN=$P(BGUREF,"^",2,3),BGUTYPE=$P(BGUREF,U,4),BGURTN1=BGUTRTN,BGUTRTN=BGUTRTN_"(.BGUDATA,"_BGUMSG1_")"
- S BGUSTR=BGURTN1_"(.BGUDATA,"_BGUSTR_")"
- S DIQUIET=1 D @BGUTRTN
- ; Same line of code used in ^BGUTCPH :
- D:$S($P(BGUMSG,"TRACE=",2)'="":1,$D(BGUTRACE):1,$P(^BGUSP(1,0),"^",2)="Y":1,1:$D(^BGUSP(1,1,"B",$J))) ^BGUTRACE
- D KILL
- Q
- ;
- INIT ;
- S U="^",BGUAPID="OE-2",BGUDONE=0
- Q
- ;
- ASKRPC ; Ask for Remote procedure call
- ;
- S DIC="^XWB(8994," D ^DIC Q:+Y<0 S BGUIEN=+Y S:BGUMSG="" BGUMSG=$P(Y,U,2)
- Q
- ;
- USELST ; Use the last value entered for this prompt
- ;
- S X=$G(^TMP("BGUTRACS",$J,"PARAMS",BGUN))
- W:X'="" *8,X
- Q
- ;
- TEST ;
- D INIT
- I '$D(^TMP("BGUTEST",$J,"PRMS")) D Q
- .S BGUMSG=^TMP("BGUTEST",$J),BGUIEN=$O(^XWB(8994,"B",$P(BGUMSG,U),"")),BGUMSG=$P(BGUMSG,U,2,999)
- .I $D(^TMP("BGUTEST",$J,1)) F BGUN=1:1 Q:'$D(^TMP("BGUTEST",$J,BGUN)) S BGUMSG=BGUMSG_^(BGUN)
- .S BGUSTR="" F BGUN=1:1:$L(BGUMSG,U) S BGUMSG2=$P(BGUMSG,U,BGUN) S:BGUN>1 BGUSTR=BGUSTR_"," S BGUSTR=BGUSTR_""""_BGUMSG2_""""
- .S BGUMSG1=BGUSTR,^TMP("BGUTEST",$J,"PRMS")=$E(BGUMSG1,1,250) D:$L(BGUMSG1)>250 S ^TMP("BGUTEST",$J,"IEN")=BGUIEN D ENT
- ..F BGUN1=1:1:($L(BGUMSG1)\250-1+($L(BGUMSG1)#250>0)) S ^TMP("BGUTEST",$J,"PRMS",BGUN1)=$E(BGUMSG1,BGUN1*250+1,BGUN1*250*2)
- S BGUMSG=$P(^TMP("BGUTEST",$J),U,2),BGUMSG1=^TMP("BGUTEST",$J,"PRMS"),BGUSTR=BGUMSG1,BGUIEN=^("IEN")
- I $D(^TMP("BGUTEST",$J,1)) F BGUN=1:1 Q:'$D(^TMP("BGUTEST",$J,BGUN)) S BGUMSG=BGUMSG_^(BGUN)
- I $D(^TMP("BGUTEST",$J,"PRMS",1)) F BGUN=1:1 Q:'$D(^TMP("BGUTEST",$J,"PRMS",BGUN)) S BGUMSG1=BGUMSG1_^(BGUN)
- D ENT
- Q
- ;
- KILL ;
- K BGUDATA,BGUDTA,BGUFLGS,BGUFDA,BGUFN,BGUIEN,BGUM,BGUMSG,BGUMSG1,BGUMSG2,BGUN,BGUN1,BGUN2,BGUQ,BGUREF,BGURTN1,BGUSTR,BGUTCK,BGUTCK1,BGUTRTN,BGUY,BGUY1,BGUYLN,BGUWMSG,BGUWPD,DIC,DIR
- Q
- ;
- END ;
- D KILL
- K BGUAPID,BGUDONE,BGUHIT,BGUTRACE,^TMP("BGUTRACS",$J)
- Q
- BGUTRACS ; IHS/OIT/MJL - REMOTE PROCEDURE TESTING ROUTINE ;
- +1 ;;1.5;BGU;;MAY 26, 2005
- +2 DO INIT
- +3 FOR
- DO MAIN
- IF BGUDONE
- QUIT
- +4 DO END
- +5 QUIT
- +6 ;
- MAIN ; -- main message processing loop
- +1 SET (BGUMSG,X)=""
- SET DIC(0)="AQEM"
- DO ASKRPC
- IF Y<0
- SET BGUDONE=1
- DO KILL
- QUIT
- +2 SET DIR(0)="FO"
- FOR BGUN=1:1
- SET DIR("A")="PARAMETER-"_BGUN
- DO ^DIR
- IF $DATA(DIROUT)
- QUIT
- IF X="^"
- QUIT
- IF X=" "
- DO USELST
- SET BGUM(BGUN)=X
- SET BGUMSG=BGUMSG_U_X
- SET ^TMP("BGUTRACS",$JOB,"PARAMS",BGUN)=X
- +3 IF BGUN=1
- SET BGUDONE=1
- DO KILL
- QUIT
- +4 SET (BGUMSG1,BGUSTR)=""
- FOR BGUN=1:1:BGUN-1
- IF BGUN>1
- SET BGUMSG1=BGUMSG1_","
- SET BGUSTR=BGUSTR_","
- SET BGUMSG1=BGUMSG1_"BGUM("_BGUN_")"
- SET BGUSTR=BGUSTR_""""_BGUM(BGUN)_""""
- +5 ; -- set up for routine call
- ENT ;
- +1 KILL X,Y,BGUDATA
- NEW DIQUIET
- +2 SET BGUREF=^XWB(8994,BGUIEN,0)
- +3 SET BGUTRTN=$PIECE(BGUREF,"^",2,3)
- SET BGUTYPE=$PIECE(BGUREF,U,4)
- SET BGURTN1=BGUTRTN
- SET BGUTRTN=BGUTRTN_"(.BGUDATA,"_BGUMSG1_")"
- +4 SET BGUSTR=BGURTN1_"(.BGUDATA,"_BGUSTR_")"
- +5 SET DIQUIET=1
- DO @BGUTRTN
- +6 ; Same line of code used in ^BGUTCPH :
- +7 IF $SELECT($PIECE(BGUMSG,"TRACE=",2)'=""
- DO ^BGUTRACE
- +8 DO KILL
- +9 QUIT
- +10 ;
- INIT ;
- +1 SET U="^"
- SET BGUAPID="OE-2"
- SET BGUDONE=0
- +2 QUIT
- +3 ;
- ASKRPC ; Ask for Remote procedure call
- +1 ;
- +2 SET DIC="^XWB(8994,"
- DO ^DIC
- IF +Y<0
- QUIT
- SET BGUIEN=+Y
- IF BGUMSG=""
- SET BGUMSG=$PIECE(Y,U,2)
- +3 QUIT
- +4 ;
- USELST ; Use the last value entered for this prompt
- +1 ;
- +2 SET X=$GET(^TMP("BGUTRACS",$JOB,"PARAMS",BGUN))
- +3 IF X'=""
- WRITE *8,X
- +4 QUIT
- +5 ;
- TEST ;
- +1 DO INIT
- +2 IF '$DATA(^TMP("BGUTEST",$JOB,"PRMS"))
- Begin DoDot:1
- +3 SET BGUMSG=^TMP("BGUTEST",$JOB)
- SET BGUIEN=$ORDER(^XWB(8994,"B",$PIECE(BGUMSG,U),""))
- SET BGUMSG=$PIECE(BGUMSG,U,2,999)
- +4 IF $DATA(^TMP("BGUTEST",$JOB,1))
- FOR BGUN=1:1
- IF '$DATA(^TMP("BGUTEST",$JOB,BGUN))
- QUIT
- SET BGUMSG=BGUMSG_^(BGUN)
- +5 SET BGUSTR=""
- FOR BGUN=1:1:$LENGTH(BGUMSG,U)
- SET BGUMSG2=$PIECE(BGUMSG,U,BGUN)
- IF BGUN>1
- SET BGUSTR=BGUSTR_","
- SET BGUSTR=BGUSTR_""""_BGUMSG2_""""
- +6 SET BGUMSG1=BGUSTR
- SET ^TMP("BGUTEST",$JOB,"PRMS")=$EXTRACT(BGUMSG1,1,250)
- IF $LENGTH(BGUMSG1)>250
- Begin DoDot:2
- +7 FOR BGUN1=1:1:($LENGTH(BGUMSG1)\250-1+($LENGTH(BGUMSG1)#250>0))
- SET ^TMP("BGUTEST",$JOB,"PRMS",BGUN1)=$EXTRACT(BGUMSG1,BGUN1*250+1,BGUN1*250*2)
- End DoDot:2
- SET ^TMP("BGUTEST",$JOB,"IEN")=BGUIEN
- DO ENT
- End DoDot:1
- QUIT
- +8 SET BGUMSG=$PIECE(^TMP("BGUTEST",$JOB),U,2)
- SET BGUMSG1=^TMP("BGUTEST",$JOB,"PRMS")
- SET BGUSTR=BGUMSG1
- SET BGUIEN=^("IEN")
- +9 IF $DATA(^TMP("BGUTEST",$JOB,1))
- FOR BGUN=1:1
- IF '$DATA(^TMP("BGUTEST",$JOB,BGUN))
- QUIT
- SET BGUMSG=BGUMSG_^(BGUN)
- +10 IF $DATA(^TMP("BGUTEST",$JOB,"PRMS",1))
- FOR BGUN=1:1
- IF '$DATA(^TMP("BGUTEST",$JOB,"PRMS",BGUN))
- QUIT
- SET BGUMSG1=BGUMSG1_^(BGUN)
- +11 DO ENT
- +12 QUIT
- +13 ;
- KILL ;
- +1 KILL BGUDATA,BGUDTA,BGUFLGS,BGUFDA,BGUFN,BGUIEN,BGUM,BGUMSG,BGUMSG1,BGUMSG2,BGUN,BGUN1,BGUN2,BGUQ,BGUREF,BGURTN1,BGUSTR,BGUTCK,BGUTCK1,BGUTRTN,BGUY,BGUY1,BGUYLN,BGUWMSG,BGUWPD,DIC,DIR
- +2 QUIT
- +3 ;
- END ;
- +1 DO KILL
- +2 KILL BGUAPID,BGUDONE,BGUHIT,BGUTRACE,^TMP("BGUTRACS",$JOB)
- +3 QUIT