| 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
 | 
|---|