| 1 | XWBEXMPL ;ISC-SF/VYD - RPC BROKER EXAMPLE ;07/13/2004  15:03 | 
|---|
| 2 | ;;1.1;RPC BROKER;**22,35**;Mar 28, 1997 | 
|---|
| 3 | ECHOSTR(RESULT,OSTRING) ;receive string and return it | 
|---|
| 4 | S RESULT=OSTRING | 
|---|
| 5 | Q | 
|---|
| 6 | ; | 
|---|
| 7 | ; | 
|---|
| 8 | GETLIST(RESULT,WHAT,QTY) ; -- return list | 
|---|
| 9 | ;WHAT - LINES or KILOBYTES, QTY - number of lines of kilobytes | 
|---|
| 10 | ;here the resulting list can get quite large - use global structure | 
|---|
| 11 | N I,J,L,V                ;looping vars | 
|---|
| 12 | S $P(L,"-+",128)=" " | 
|---|
| 13 | K ^TMP($J,"XWB RESULTS") ;clean out temporary storage | 
|---|
| 14 | I WHAT="LINES" D         ;lines requested | 
|---|
| 15 | . F I=1:1:QTY D | 
|---|
| 16 | . . S V="Line #"_I,V=V_$S(I'>$L(V):"",1:$E(L,1,$S(QTY+$L(V)>255:255-$L(V),1:QTY-$L(V)))) | 
|---|
| 17 | . . S ^TMP($J,"XWB RESULTS",I)=V | 
|---|
| 18 | . . ;S ^TMP($J,"XWB RESULTS",I)="Line #"_I | 
|---|
| 19 | ; | 
|---|
| 20 | E  D                     ;kilobytes of data requested | 
|---|
| 21 | . F I=1:1:QTY D | 
|---|
| 22 | . . F J=1:1:64 D         ;64 lines * 16 chars = 1K | 
|---|
| 23 | . . . S ^TMP($J,"XWB RESULTS",I*100+J)=$E(I_"-Kilobyte******",1,16) | 
|---|
| 24 | ; | 
|---|
| 25 | S RESULT=$NA(^TMP($J,"XWB RESULTS")) ;give Broker data root | 
|---|
| 26 | Q | 
|---|
| 27 | ; | 
|---|
| 28 | ; | 
|---|
| 29 | WPTEXT(RESULT) ;return word processing text | 
|---|
| 30 | N TEXT | 
|---|
| 31 | ;use DBS call to get REMOTE PROCEDURE file description | 
|---|
| 32 | D FILE^DID(8994,"","DESCRIPTION","TEXT") | 
|---|
| 33 | M RESULT=TEXT("DESCRIPTION") | 
|---|
| 34 | Q | 
|---|
| 35 | ; | 
|---|
| 36 | ; | 
|---|
| 37 | SORTNUM(RESULT,DIRCTN,ARRAY) ; -- sort numbers and return sorted | 
|---|
| 38 | ;DIRCTN - direction to sort in HI or LO | 
|---|
| 39 | ;ARRAY - array of numbers to sort | 
|---|
| 40 | ;S $ECODE=",U411," Q | 
|---|
| 41 | N I,J | 
|---|
| 42 | IF DIRCTN="LO" D        ;sort LOW -> HIGH | 
|---|
| 43 | . S I="" F  S I=$O(ARRAY(I)) Q:I=""  S J=ARRAY(I) D | 
|---|
| 44 | . . S RESULT(J)=J | 
|---|
| 45 | . . S JLIN=$G(JLIN)+1,^TMP("JLI",JLIN)=I_U_J | 
|---|
| 46 | E  D                    ;sort HIGH -> LOW | 
|---|
| 47 | . S I="" F  S I=$O(ARRAY(I)) Q:I=""  S J=ARRAY(I) D | 
|---|
| 48 | . . S RESULT(99999999-J)=J | 
|---|
| 49 | Q | 
|---|
| 50 | ; | 
|---|
| 51 | GSORT(RESULT,DIRCTN,ROOT) ; -- Sort numbers in a global array | 
|---|
| 52 | ;DIRCTN - direction to sort in HI or LO | 
|---|
| 53 | ;ROOT - Closed Root of the Global array of numbers to sort | 
|---|
| 54 | ;Data is in ^TMP("XWB",$J,n) | 
|---|
| 55 | N I,V K ^TMP($J) | 
|---|
| 56 | IF DIRCTN="LO" D        ;sort LOW -> HIGH | 
|---|
| 57 | . S I="" F  S I=$O(@ROOT@(I)) Q:I=""  D | 
|---|
| 58 | . . S V=$G(@ROOT@(I)) I $L(V) S ^TMP($J,V)=V | 
|---|
| 59 | E  D                    ;sort HIGH -> LOW | 
|---|
| 60 | . S I="" F  S I=$O(@ROOT@(I)) Q:I=""  D | 
|---|
| 61 | . . S V=$G(@ROOT@(I)) I $L(V) S ^TMP($J,99999999-V)=V | 
|---|
| 62 | S RESULT=$NA(^TMP($J)) | 
|---|
| 63 | M ^RWF($J)=@ROOT | 
|---|
| 64 | Q | 
|---|
| 65 | ; | 
|---|
| 66 | BIGTXT(RESULT,ARRAY) ;-- Accept a big text block. | 
|---|
| 67 | ;Return count. char^lines | 
|---|
| 68 | N CC,LC,I | 
|---|
| 69 | S CC=0,LC=0,I="" | 
|---|
| 70 | F  S I=$O(ARRAY(I)) Q:I=""  S LC=LC+1,CC=CC+$L(ARRAY(I)) | 
|---|
| 71 | K ^TMP($J) M ^TMP($J)=ARRAY | 
|---|
| 72 | S RESULT=CC_"^"_LC | 
|---|
| 73 | Q | 
|---|