| 1 | FSCUS ;SLC/STAFF-NOIS Utilities Sort ;4/22/94  12:36
 | 
|---|
| 2 |  ;;1.1;NOIS;;Sep 06, 1998
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | SORT(SORT) ; from FSCLMPOS, FSCRPTS
 | 
|---|
| 5 |  ; sorts ^TMP("FSC LIST CALLS",$J,  globals using a sequence of fields
 | 
|---|
| 6 |  ; SORT(seq #) = zero node of field
 | 
|---|
| 7 |  ; SORT(sort seq #,"D") = ""  (exists if field is to be sorted in descending order)
 | 
|---|
| 8 |  I '$O(SORT(0)) Q
 | 
|---|
| 9 |  N CALL,CHECK,CNT,DA,DESCEND,DIC,DIQ,DR,FLD,GBL,LASTCNT,LEN,LNUM,TMPSORT,TYPE,VAL,VALUE K DIQ,VALUE
 | 
|---|
| 10 |  S DESCEND="" K ^TMP("FSC SORT",$J)
 | 
|---|
| 11 |  F CNT=1:1 Q:'$D(SORT(CNT))  S LASTCNT=CNT I $D(SORT(CNT,"D")) S DESCEND=DESCEND_CNT_","
 | 
|---|
| 12 |  S LEN=60\LASTCNT I '$G(FSCDEV) W !
 | 
|---|
| 13 |  S DR="",CNT=0 F  S CNT=$O(SORT(CNT)) Q:CNT<1  S DR=DR_$P(SORT(CNT),U,8)_";"
 | 
|---|
| 14 |  S DIC=7100,DIQ="VALUE",DIQ(0)="IE"
 | 
|---|
| 15 |  S CALL=0 F  S CALL=$O(^TMP("FSC LIST CALLS",$J,"CX",CALL)) Q:CALL<1  D
 | 
|---|
| 16 |  .S DA=CALL K VALUE D EN^DIQ1
 | 
|---|
| 17 |  .S GBL="^TMP(""FSC SORT"",$J",CNT=0 F  S CNT=$O(SORT(CNT)) Q:CNT<1  D
 | 
|---|
| 18 |  ..S FLD=$P(SORT(CNT),U,8),TYPE=$P(SORT(CNT),U,3)
 | 
|---|
| 19 |  ..S VAL=VALUE(7100,CALL,FLD,$S(TYPE["D":"I",1:"E"))
 | 
|---|
| 20 |  ..D
 | 
|---|
| 21 |  ...I TYPE["D"!(TYPE["N") S VAL=$S(VAL'<1:+VAL,$E(VAL)'=".":+VAL,VAL?1P1N.N:"0"_VAL,1:+VAL) I DESCEND[(CNT_",") S VAL=9999999-VAL Q
 | 
|---|
| 22 |  ...S VAL=$$UP^XLFSTR(VAL) I DESCEND[(CNT_",") S VAL=$TR(VAL,"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ","9876543210ZYXWVUTSRQPONMLKJIHGFEDCBA")
 | 
|---|
| 23 |  ..S VAL=""""_$S(DESCEND[(CNT_",")&'$L(VAL):"Z",1:" ")_$E(VAL,1,LEN)_""""
 | 
|---|
| 24 |  ..S GBL=GBL_","_VAL
 | 
|---|
| 25 |  ..I '$O(SORT(CNT)) S GBL=GBL_","_CALL_")" S @GBL=CALL
 | 
|---|
| 26 |  K ^TMP("FSC LIST CALLS",$J),DIC,DIQ,VALUE
 | 
|---|
| 27 |  S VALMCNT=0,LNUM=0
 | 
|---|
| 28 |  S TMPSORT="^TMP(""FSC SORT"",$J)",CHECK="^TMP(""FSC SORT"","_$J_",""z"""
 | 
|---|
| 29 |  F  S TMPSORT=$Q(@TMPSORT)  Q:TMPSORT]CHECK  S CALL=@TMPSORT D SETUP^FSCLML I (VALMCNT#10)=0 D CHECK^FSCLML(.VALMQUIT) I $D(VALMQUIT) S VALMBCK="Q" Q
 | 
|---|
| 30 |  K ^TMP("FSC SORT",$J)
 | 
|---|
| 31 |  I $D(VALMQUIT) Q
 | 
|---|
| 32 |  S ^TMP("FSC LIST CALLS",$J)=LNUM_U_VALMCNT
 | 
|---|
| 33 |  S VALMBG=1
 | 
|---|
| 34 |  Q
 | 
|---|