[613] | 1 | RORTMP ;HCIOFO/SG - TEMPORARY GLOBAL STORAGE ; 10/14/05 1:41pm
|
---|
| 2 | ;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006
|
---|
| 3 | ;
|
---|
| 4 | ; DO NOT use this API to pass the data between tasks!
|
---|
| 5 | ;
|
---|
| 6 | Q
|
---|
| 7 | ;
|
---|
| 8 | ;***** ALLOCATES A TEMPORARY GLOBAL BUFFER
|
---|
| 9 | ;
|
---|
| 10 | ; [.SUBS] Subscript of the buffer is returned here
|
---|
| 11 | ;
|
---|
| 12 | ; Return Values:
|
---|
| 13 | ; Closed root of the buffer
|
---|
| 14 | ;
|
---|
| 15 | ALLOC(SUBS) ;
|
---|
| 16 | N NDX,NODE
|
---|
| 17 | S NDX=$O(^TMP($J,"RORTMP-0",""),-1)+1
|
---|
| 18 | S SUBS="RORTMP-"_NDX,NODE=$NA(^TMP($J,SUBS)) K @NODE
|
---|
| 19 | S ^TMP($J,"RORTMP-0",NDX)=""
|
---|
| 20 | Q NODE
|
---|
| 21 | ;
|
---|
| 22 | ;***** FREES THE TEMPORARY GLOBAL BUFFER
|
---|
| 23 | ;
|
---|
| 24 | ; NODE Closed root of the temporary global buffer
|
---|
| 25 | ;
|
---|
| 26 | FREE(NODE) ;
|
---|
| 27 | N NDX S NDX=$$NDX(NODE)
|
---|
| 28 | K:NDX>0 ^TMP($J,"RORTMP-0",NDX),@NODE
|
---|
| 29 | Q
|
---|
| 30 | ;
|
---|
| 31 | ;***** EXTRACTS THE INDEX FROM THE CLOSED ROOT OF THE BUFFER
|
---|
| 32 | ;
|
---|
| 33 | ; NODE Closed root of the temporary global buffer
|
---|
| 34 | ;
|
---|
| 35 | ; Return Values:
|
---|
| 36 | ; 0 Invalid closed root
|
---|
| 37 | ; >0 Index of the buffer
|
---|
| 38 | ;
|
---|
| 39 | NDX(NODE) ;
|
---|
| 40 | N SUBS
|
---|
| 41 | Q:$E(NODE,1)'="^" 0
|
---|
| 42 | Q:$NA(@NODE,1)'=$NA(^TMP($J)) 0
|
---|
| 43 | S SUBS=$QS(NODE,2)
|
---|
| 44 | Q:$P(SUBS,"-")'="RORTMP" 0
|
---|
| 45 | S NDX=+$P(SUBS,"-",2)
|
---|
| 46 | Q $S(NDX>0:NDX,1:0)
|
---|
| 47 | ;
|
---|
| 48 | ;***** FREES THE LAST ALLOCATED BUFFER(S)
|
---|
| 49 | ;
|
---|
| 50 | ; [NODE] Closed root of the temporary global buffer.
|
---|
| 51 | ;
|
---|
| 52 | ; If this parameter is defined and references a
|
---|
| 53 | ; valid temporary buffer, then this buffer and
|
---|
| 54 | ; all others allocated after it are freed.
|
---|
| 55 | ;
|
---|
| 56 | ; Otherwise, only the last buffer is freed.
|
---|
| 57 | ;
|
---|
| 58 | POP(NODE) ;
|
---|
| 59 | N NDX S NDX=$$NDX($G(NODE))
|
---|
| 60 | S:NDX'>0 NDX=+$O(^TMP($J,"RORTMP-0",""),-1)
|
---|
| 61 | F Q:NDX'>0 D S NDX=$O(^TMP($J,"RORTMP-0",NDX))
|
---|
| 62 | . D FREE($NA(^TMP($J,"RORTMP-"_NDX)))
|
---|
| 63 | Q
|
---|
| 64 | ;
|
---|
| 65 | ;***** DELETES ALL TEMPORARY BUFFERS
|
---|
| 66 | PURGE ;
|
---|
| 67 | N I S I="RORTMP-"
|
---|
| 68 | F S I=$O(^TMP($J,I)) Q:$E(I,1,7)'="RORTMP-" K ^TMP($J,I)
|
---|
| 69 | Q
|
---|