FSCRPCLS ;SLC/STAFF-NOIS RPC List Short ;7/23/98  14:17
 ;;1.1;NOIS;;Sep 06, 1998
 ;
FILE(IN,OUT) ; from FSCRPX (RPCStaticFile)
 N DIR,FILE,FROM,LINE,NUM
 S LINE=$G(^TMP("FSCRPC",$J,"INPUT",1)),FILE=$P(LINE,U),FROM=$P(LINE,U,2),DIR=$P(LINE,U,3)
 I '$L(FILE) Q
 I FILE="STATUS" D STATUS Q
 I FILE="SSTATUS" D SSTATUS Q
 I FILE="RSTATUS" D RSTATUS Q
 I FILE="SPEC" D SPEC Q
 I FILE="PRI" D PRI Q
 I $E(FILE,1,3)="SUB" D  Q
 .I $P(FILE,";",2) D SUBPACK(+$P(FILE,";",2)) Q
 .D SUB Q
 I FILE="ISC" D ISC Q
 I FILE="FUNC" D FUNC Q
 I FILE="TASK" D TASK Q
 I FILE="LTYPE" D LTYPE Q
 I FILE="PACKGP" D PACKGP Q
 I FILE="VISN" D VISN Q
 I FILE="EPTYPE" D EPTYPE Q
 I FILE="SYSTEM" D SYSTEM Q
 I FILE="FIELD" D FIELD Q
 I FILE="FORMAT_SORT" D SORT Q
 I FILE="FORMAT_DISPLAY" D DISPLAY Q
 I FILE="USER_AFFIL" D UPACK Q
 I FILE="USER_FORMAT_SORT" D USORT Q
 I FILE="USER_FORMAT_DISPLAY" D UDISPLAY Q
 I FILE="COMMON_LISTS" D CLISTS Q
 I $P(FILE,";")="USER_LISTS" D ULISTS Q
 I $E(FILE,1,3)="WEB" D WEB(+$P(FILE,";",2)) Q
 Q
 ;
SSTATUS ;
 N FROM,IEN,NUM S NUM=0
 S FROM="" F  S FROM=$O(^FSC("STATUS","B",FROM)) Q:FROM=""  D
 .S IEN=0 F  S IEN=$O(^FSC("STATUS","B",FROM,IEN)) Q:'IEN  D
 ..I $P($G(^FSC("STATUS",IEN,0)),U,2)="D" Q
 ..S NUM=NUM+1,^TMP("FSCRPC",$J,"OUTPUT",NUM)=IEN_U_$G(^FSC("STATUS",IEN,0))
 Q
 ;
RSTATUS ;
 N FROM,IEN,NUM S NUM=0
 S FROM="" F  S FROM=$O(^FSC("STATUS","B",FROM)) Q:FROM=""  D
 .S IEN=0 F  S IEN=$O(^FSC("STATUS","B",FROM,IEN)) Q:'IEN  D
 ..I $P($G(^FSC("STATUS",IEN,0)),U,2)="S" Q
 ..S NUM=NUM+1,^TMP("FSCRPC",$J,"OUTPUT",NUM)=IEN_U_$G(^FSC("STATUS",IEN,0))
 Q
 ;
STATUS ;
 N FROM,IEN,NUM S NUM=0
 S FROM="" F  S FROM=$O(^FSC("STATUS","B",FROM)) Q:FROM=""  D
 .S IEN=0 F  S IEN=$O(^FSC("STATUS","B",FROM,IEN)) Q:'IEN  D
 ..S NUM=NUM+1,^TMP("FSCRPC",$J,"OUTPUT",NUM)=IEN_U_$G(^FSC("STATUS",IEN,0))
 Q
 ;
SPEC ;
 K ^TMP("FSC SPEC",$J)
 N FROM,IEN,NUM,ZERO S NUM=0
 S IEN=0 F  S IEN=$O(^FSC("SPEC",IEN)) Q:IEN<1  S ZERO=$G(^(IEN,0)) I $L(ZERO),'$P(ZERO,U,2) D
 .S NAME=$P($G(^VA(200,IEN,0)),U) I $P($G(^(0)),U,11),$P($G(^(0)),U,11)<DT Q
 .I $L(NAME) S ^TMP("FSC SPEC",$J,NAME,IEN)=NAME_U_$P(ZERO,U,2,99)
 S FROM="" F  S FROM=$O(^TMP("FSC SPEC",$J,FROM)) Q:FROM=""  D
 .S IEN=0 F  S IEN=$O(^TMP("FSC SPEC",$J,FROM,IEN)) Q:'IEN  D
 ..S NUM=NUM+1,^TMP("FSCRPC",$J,"OUTPUT",NUM)=IEN_U_^TMP("FSC SPEC",$J,FROM,IEN)
 K ^TMP("FSC SPEC",$J)
 Q
 ;
PRI ;
 N FROM,IEN,NUM S NUM=0
 S FROM="" F  S FROM=$O(^FSC("PRI","B",FROM)) Q:FROM=""  D
 .S IEN=0 F  S IEN=$O(^FSC("PRI","B",FROM,IEN)) Q:'IEN  D
 ..S NUM=NUM+1,^TMP("FSCRPC",$J,"OUTPUT",NUM)=IEN_U_$G(^FSC("PRI",IEN,0))
 Q
 ;
SUB ;
 N FROM,IEN,NUM,PACK,PACKNAME S NUM=0
 S FROM="" F  S FROM=$O(^FSC("SUB","B",FROM)) Q:FROM=""  D
 .S IEN=0 F  S IEN=$O(^FSC("SUB","B",FROM,IEN)) Q:'IEN  D
 ..S PACK=+$P($G(^FSC("SUB",IEN,0)),U,2)
 ..I 'PACK Q
 ..S PACKNAME=$P($G(^FSC("PACK",PACK,0)),U)
 ..S NUM=NUM+1,^TMP("FSCRPC",$J,"OUTPUT",NUM)=IEN_U_$P(^FSC("SUB",IEN,0),U)_" - "_PACKNAME_U_$P(^(0),U)
 Q
 ;
SUBPACK(PACK) ;
 N FROM,IEN,LINE,NAME,NUM,PACKNAME K ^TMP("FSC TEMP",$J)
 S PACKNAME=$P($G(^FSC("PACK",PACK,0)),U)
 S IEN=0 F  S IEN=$O(^FSC("SUB","AC",PACK,IEN)) Q:IEN=""  D
 .S NAME=$P($G(^FSC("SUB",IEN,0)),U)
 .I '$L(NAME) Q
 .S ^TMP("FSC TEMP",$J,NAME,IEN)=IEN_U_NAME_" - "_PACKNAME_U_NAME
 S NUM=0
 S NAME="" F  S NAME=$O(^TMP("FSC TEMP",$J,NAME)) Q:NAME=""  D
 .S IEN=0 F  S IEN=$O(^TMP("FSC TEMP",$J,NAME,IEN)) Q:IEN<1  S LINE=^(IEN) D
 ..S NUM=NUM+1
 ..S ^TMP("FSCRPC",$J,"OUTPUT",NUM)=LINE
 K ^TMP("FSC TEMP",$J)
 Q
 ;
ISC ;
 N FROM,IEN,NUM S NUM=0
 S FROM="" F  S FROM=$O(^FSC("ISC","B",FROM)) Q:FROM=""  D
 .S IEN=0 F  S IEN=$O(^FSC("ISC","B",FROM,IEN)) Q:'IEN  D
 ..S NUM=NUM+1,^TMP("FSCRPC",$J,"OUTPUT",NUM)=IEN_U_$G(^FSC("ISC",IEN,0))
 Q
 ;
FUNC ;
 N FROM,IEN,NUM,ZERO S NUM=0
 S FROM="" F  S FROM=$O(^FSC("FUNC","B",FROM)) Q:FROM=""  D
 .S IEN=0 F  S IEN=$O(^FSC("FUNC","B",FROM,IEN)) Q:'IEN  D
 ..S ZERO=$G(^FSC("FUNC",IEN,0)) Q:'$L(ZERO)  Q:$P(ZERO,U,2)
 ..S NUM=NUM+1,^TMP("FSCRPC",$J,"OUTPUT",NUM)=IEN_U_ZERO
 Q
 ;
TASK ;
 N FROM,IEN,NUM,ZERO S NUM=0
 S FROM="" F  S FROM=$O(^FSC("TASK","B",FROM)) Q:FROM=""  D
 .S IEN=0 F  S IEN=$O(^FSC("TASK","B",FROM,IEN)) Q:'IEN  D
 ..S ZERO=$G(^FSC("TASK",IEN,0)) Q:'$L(ZERO)  Q:$P(ZERO,U,2)
 ..S NUM=NUM+1,^TMP("FSCRPC",$J,"OUTPUT",NUM)=IEN_U_ZERO
 Q
 ;
LTYPE ;
 N FROM,IEN,NUM S NUM=0
 S FROM="" F  S FROM=$O(^FSC("LTYPE","B",FROM)) Q:FROM=""  D
 .S IEN=0 F  S IEN=$O(^FSC("LTYPE","B",FROM,IEN)) Q:'IEN  D
 ..S NUM=NUM+1,^TMP("FSCRPC",$J,"OUTPUT",NUM)=IEN_U_$G(^FSC("LTYPE",IEN,0))
 Q
 ;
PACKGP ;
 N FROM,IEN,NUM S NUM=0
 S FROM="" F  S FROM=$O(^FSC("PACKG","B",FROM)) Q:FROM=""  D
 .S IEN=0 F  S IEN=$O(^FSC("PACKG","B",FROM,IEN)) Q:'IEN  D
 ..S NUM=NUM+1,^TMP("FSCRPC",$J,"OUTPUT",NUM)=IEN_U_$G(^FSC("PACKG",IEN,0))
 Q
 ;
VISN ;
 N FROM,IEN,NUM S NUM=0
 S FROM="" F  S FROM=$O(^FSC("VISN","B",FROM)) Q:FROM=""  D
 .S IEN=0 F  S IEN=$O(^FSC("VISN","B",FROM,IEN)) Q:'IEN  D
 ..S NUM=NUM+1,^TMP("FSCRPC",$J,"OUTPUT",NUM)=IEN_U_$G(^FSC("VISN",IEN,0))
 Q
 ;
WEB(PACK) ;
 N IEN,NUM S NUM=0
 S IEN=0 F  S IEN=$O(^FSCD("WEB","C",PACK,IEN)) Q:'IEN  D
 .S NUM=NUM+1,^TMP("FSCRPC",$J,"OUTPUT",NUM)=IEN_U_$G(^FSCD("WEB",IEN,1))
 Q
EPTYPE ;
 N FROM,IEN,NUM S NUM=0
 S FROM="" F  S FROM=$O(^FSC("EPTYPE","B",FROM)) Q:FROM=""  D
 .S IEN=0 F  S IEN=$O(^FSC("EPTYPE","B",FROM,IEN)) Q:'IEN  D
 ..S NUM=NUM+1,^TMP("FSCRPC",$J,"OUTPUT",NUM)=IEN_U_$G(^FSC("EPTYPE",IEN,0))
 Q
 ;
SYSTEM ;
 N FROM,IEN,NUM S NUM=0
 S FROM="" F  S FROM=$O(^FSC("SYSTEM","B",FROM)) Q:FROM=""  D
 .S IEN=0 F  S IEN=$O(^FSC("SYSTEM","B",FROM,IEN)) Q:'IEN  D
 ..S NUM=NUM+1,^TMP("FSCRPC",$J,"OUTPUT",NUM)=IEN_U_$G(^FSC("SYSTEM",IEN,0))
 Q
 ;
FIELD ;
 N FROM,IEN,NUM S NUM=0
 S FROM="" F  S FROM=$O(^FSC("FLD","B",FROM)) Q:FROM=""  D
 .S IEN=0 F  S IEN=$O(^FSC("FLD","B",FROM,IEN)) Q:'IEN  D
 ..S NUM=NUM+1,^TMP("FSCRPC",$J,"OUTPUT",NUM)=IEN_U_$G(^FSC("FLD",IEN,0))
 Q
 ;
UPACK ;
 N CNT,LINE,NUM,PACK
 S (CNT,NUM)=0 F  S NUM=$O(^FSC("SPEC",DUZ,30,NUM)) Q:NUM<1  S PACK=+$G(^(NUM,0)) I PACK D
 .S LINE=$G(^FSC("PACK",PACK,0))
 .I '$L(LINE) Q
 .S CNT=CNT+1,^TMP("FSCRPC",$J,"OUTPUT",CNT)=PACK_U_LINE
 Q
 ;
USORT ;
 N DESCEND,FIELD,LINE,LINE1,NUM,SUBNUM
 S NUM=0 F  S NUM=$O(^FSC("FORMAT","C",DUZ,NUM)) Q:NUM<1  S LINE=$G(^FSC("FORMAT",NUM,0)) I $P(LINE,U,2)="S" D
 .S FIELD="",DESCEND=""
 .S SUBNUM=0 F  S SUBNUM=$O(^FSC("FORMAT",NUM,2,SUBNUM)) Q:SUBNUM<1  S LINE1=$G(^(SUBNUM,0)) D
 ..I +LINE1<1 Q
 ..S DESCEND=$P(LINE1,U,8) I 'DESCEND S DESCEND=0
 ..S FIELD=FIELD_$P(LINE1,U)_":"_DESCEND_";"
 .S ^TMP("FSCRPC",$J,"OUTPUT",NUM)=NUM_U_LINE S $P(^(NUM),U,7)=FIELD
 Q
 ;
UDISPLAY ;
 N FIELD,LINE,LINE1,NUM,SUBNUM
 S NUM=0 F  S NUM=$O(^FSC("FORMAT","C",DUZ,NUM)) Q:NUM<1  S LINE=$G(^FSC("FORMAT",NUM,0)) I $P(LINE,U,2)="F" D
 .S FIELD=""
 .S SUBNUM=0 F  S SUBNUM=$O(^FSC("FORMAT",NUM,2,SUBNUM)) Q:SUBNUM<1  S LINE1=$G(^(SUBNUM,0)) D
 ..I +LINE1<1 Q
 ..S FIELD=FIELD_$P(LINE1,U)_";"
 .S ^TMP("FSCRPC",$J,"OUTPUT",NUM)=NUM_U_LINE S $P(^(NUM),U,7)=FIELD
 Q
 ;
SORT ;
 N DESCEND,FIELD,LINE,LINE1,NUM,SUBNUM
 S NUM=0 F  S NUM=$O(^FSC("FORMAT",NUM)) Q:NUM<1  S LINE=$G(^(NUM,0)) I $P(LINE,U,2)="S" D
 .S FIELD="",DESCEND=""
 .S SUBNUM=0 F  S SUBNUM=$O(^FSC("FORMAT",NUM,2,SUBNUM)) Q:SUBNUM<1  S LINE1=$G(^(SUBNUM,0)) D
 ..I +LINE1<1 Q
 ..S DESCEND=$P(LINE1,U,8) I 'DESCEND S DESCEND=0
 ..S FIELD=FIELD_$P(LINE1,U)_":"_DESCEND_";"
 .S ^TMP("FSCRPC",$J,"OUTPUT",NUM)=NUM_U_LINE S $P(^(NUM),U,7)=FIELD
 Q
 ;
DISPLAY ;
 N FIELD,LINE,LINE1,NUM,SUBNUM
 S NUM=0 F  S NUM=$O(^FSC("FORMAT",NUM)) Q:NUM<1  S LINE=$G(^(NUM,0)) I $P(LINE,U,2)="F" D
 .S FIELD=""
 .S SUBNUM=0 F  S SUBNUM=$O(^FSC("FORMAT",NUM,2,SUBNUM)) Q:SUBNUM<1  S LINE1=$G(^(SUBNUM,0)) D
 ..I +LINE1<1 Q
 ..S FIELD=FIELD_$P(LINE1,U)_";"
 .S ^TMP("FSCRPC",$J,"OUTPUT",NUM)=NUM_U_LINE S $P(^(NUM),U,7)=FIELD
 Q
 ;
CLISTS ;
 N CNT,LIST,LISTNAME,NUM,ZERO
 S CNT=0
 S LISTNAME="" F  S LISTNAME=$O(^FSC("LIST","B",LISTNAME)) Q:LISTNAME=""  D
 .S NUM=0 F  S NUM=$O(^FSC("LIST","B",LISTNAME,NUM)) Q:NUM<1  D
 ..S ZERO=$G(^FSC("LIST",NUM,0))
 ..I $L(ZERO),'$P(ZERO,U,2) D
 ...S CNT=CNT+1
 ...S ^TMP("FSCRPC",$J,"OUTPUT",CNT)=NUM_U_ZERO
 Q
 ;
ULISTS ;
 N CNT,LINE,LIST,LISTNAME,NUM,USER,ZERO K ^TMP("FSC MERGE",$J)
 S USER=+$P(FILE,";",2)
 I '$D(^VA(200,USER,0)) Q
 S CNT=0
 S NUM=0 F  S NUM=$O(^FSC("LIST","C",USER,NUM)) Q:NUM<1  D
 .S ZERO=$G(^FSC("LIST",NUM,0))
 .Q:'$L(ZERO)  Q:$P(ZERO,U,2)'=USER
 .S ^TMP("FSC MERGE",$J,$P(ZERO,U),NUM)=NUM_U_ZERO
 S CNT=0
 S LISTNAME="" F  S LISTNAME=$O(^TMP("FSC MERGE",$J,LISTNAME)) Q:LISTNAME=""  D
 .S NUM=0 F  S NUM=$O(^TMP("FSC MERGE",$J,LISTNAME,NUM)) Q:NUM<1  S LINE=^(NUM) D
 ..S CNT=CNT+1
 ..S ^TMP("FSCRPC",$J,"OUTPUT",CNT)=LINE
 K ^TMP("FSC MERGE",$J)
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HFSCRPCLS   8857     printed  Sep 23, 2025@19:55:51                                                                                                                                                                                                    Page 2
FSCRPCLS  ;SLC/STAFF-NOIS RPC List Short ;7/23/98  14:17
 +1       ;;1.1;NOIS;;Sep 06, 1998
 +2       ;
FILE(IN,OUT) ; from FSCRPX (RPCStaticFile)
 +1        NEW DIR,FILE,FROM,LINE,NUM
 +2        SET LINE=$GET(^TMP("FSCRPC",$JOB,"INPUT",1))
           SET FILE=$PIECE(LINE,U)
           SET FROM=$PIECE(LINE,U,2)
           SET DIR=$PIECE(LINE,U,3)
 +3        IF '$LENGTH(FILE)
               QUIT 
 +4        IF FILE="STATUS"
               DO STATUS
               QUIT 
 +5        IF FILE="SSTATUS"
               DO SSTATUS
               QUIT 
 +6        IF FILE="RSTATUS"
               DO RSTATUS
               QUIT 
 +7        IF FILE="SPEC"
               DO SPEC
               QUIT 
 +8        IF FILE="PRI"
               DO PRI
               QUIT 
 +9        IF $EXTRACT(FILE,1,3)="SUB"
               Begin DoDot:1
 +10               IF $PIECE(FILE,";",2)
                       DO SUBPACK(+$PIECE(FILE,";",2))
                       QUIT 
 +11               DO SUB
                   QUIT 
               End DoDot:1
               QUIT 
 +12       IF FILE="ISC"
               DO ISC
               QUIT 
 +13       IF FILE="FUNC"
               DO FUNC
               QUIT 
 +14       IF FILE="TASK"
               DO TASK
               QUIT 
 +15       IF FILE="LTYPE"
               DO LTYPE
               QUIT 
 +16       IF FILE="PACKGP"
               DO PACKGP
               QUIT 
 +17       IF FILE="VISN"
               DO VISN
               QUIT 
 +18       IF FILE="EPTYPE"
               DO EPTYPE
               QUIT 
 +19       IF FILE="SYSTEM"
               DO SYSTEM
               QUIT 
 +20       IF FILE="FIELD"
               DO FIELD
               QUIT 
 +21       IF FILE="FORMAT_SORT"
               DO SORT
               QUIT 
 +22       IF FILE="FORMAT_DISPLAY"
               DO DISPLAY
               QUIT 
 +23       IF FILE="USER_AFFIL"
               DO UPACK
               QUIT 
 +24       IF FILE="USER_FORMAT_SORT"
               DO USORT
               QUIT 
 +25       IF FILE="USER_FORMAT_DISPLAY"
               DO UDISPLAY
               QUIT 
 +26       IF FILE="COMMON_LISTS"
               DO CLISTS
               QUIT 
 +27       IF $PIECE(FILE,";")="USER_LISTS"
               DO ULISTS
               QUIT 
 +28       IF $EXTRACT(FILE,1,3)="WEB"
               DO WEB(+$PIECE(FILE,";",2))
               QUIT 
 +29       QUIT 
 +30      ;
SSTATUS   ;
 +1        NEW FROM,IEN,NUM
           SET NUM=0
 +2        SET FROM=""
           FOR 
               SET FROM=$ORDER(^FSC("STATUS","B",FROM))
               if FROM=""
                   QUIT 
               Begin DoDot:1
 +3                SET IEN=0
                   FOR 
                       SET IEN=$ORDER(^FSC("STATUS","B",FROM,IEN))
                       if 'IEN
                           QUIT 
                       Begin DoDot:2
 +4                        IF $PIECE($GET(^FSC("STATUS",IEN,0)),U,2)="D"
                               QUIT 
 +5                        SET NUM=NUM+1
                           SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=IEN_U_$GET(^FSC("STATUS",IEN,0))
                       End DoDot:2
               End DoDot:1
 +6        QUIT 
 +7       ;
RSTATUS   ;
 +1        NEW FROM,IEN,NUM
           SET NUM=0
 +2        SET FROM=""
           FOR 
               SET FROM=$ORDER(^FSC("STATUS","B",FROM))
               if FROM=""
                   QUIT 
               Begin DoDot:1
 +3                SET IEN=0
                   FOR 
                       SET IEN=$ORDER(^FSC("STATUS","B",FROM,IEN))
                       if 'IEN
                           QUIT 
                       Begin DoDot:2
 +4                        IF $PIECE($GET(^FSC("STATUS",IEN,0)),U,2)="S"
                               QUIT 
 +5                        SET NUM=NUM+1
                           SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=IEN_U_$GET(^FSC("STATUS",IEN,0))
                       End DoDot:2
               End DoDot:1
 +6        QUIT 
 +7       ;
STATUS    ;
 +1        NEW FROM,IEN,NUM
           SET NUM=0
 +2        SET FROM=""
           FOR 
               SET FROM=$ORDER(^FSC("STATUS","B",FROM))
               if FROM=""
                   QUIT 
               Begin DoDot:1
 +3                SET IEN=0
                   FOR 
                       SET IEN=$ORDER(^FSC("STATUS","B",FROM,IEN))
                       if 'IEN
                           QUIT 
                       Begin DoDot:2
 +4                        SET NUM=NUM+1
                           SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=IEN_U_$GET(^FSC("STATUS",IEN,0))
                       End DoDot:2
               End DoDot:1
 +5        QUIT 
 +6       ;
SPEC      ;
 +1        KILL ^TMP("FSC SPEC",$JOB)
 +2        NEW FROM,IEN,NUM,ZERO
           SET NUM=0
 +3        SET IEN=0
           FOR 
               SET IEN=$ORDER(^FSC("SPEC",IEN))
               if IEN<1
                   QUIT 
               SET ZERO=$GET(^(IEN,0))
               IF $LENGTH(ZERO)
                   IF '$PIECE(ZERO,U,2)
                       Begin DoDot:1
 +4                        SET NAME=$PIECE($GET(^VA(200,IEN,0)),U)
                           IF $PIECE($GET(^(0)),U,11)
                               IF $PIECE($GET(^(0)),U,11)<DT
                                   QUIT 
 +5                        IF $LENGTH(NAME)
                               SET ^TMP("FSC SPEC",$JOB,NAME,IEN)=NAME_U_$PIECE(ZERO,U,2,99)
                       End DoDot:1
 +6        SET FROM=""
           FOR 
               SET FROM=$ORDER(^TMP("FSC SPEC",$JOB,FROM))
               if FROM=""
                   QUIT 
               Begin DoDot:1
 +7                SET IEN=0
                   FOR 
                       SET IEN=$ORDER(^TMP("FSC SPEC",$JOB,FROM,IEN))
                       if 'IEN
                           QUIT 
                       Begin DoDot:2
 +8                        SET NUM=NUM+1
                           SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=IEN_U_^TMP("FSC SPEC",$JOB,FROM,IEN)
                       End DoDot:2
               End DoDot:1
 +9        KILL ^TMP("FSC SPEC",$JOB)
 +10       QUIT 
 +11      ;
PRI       ;
 +1        NEW FROM,IEN,NUM
           SET NUM=0
 +2        SET FROM=""
           FOR 
               SET FROM=$ORDER(^FSC("PRI","B",FROM))
               if FROM=""
                   QUIT 
               Begin DoDot:1
 +3                SET IEN=0
                   FOR 
                       SET IEN=$ORDER(^FSC("PRI","B",FROM,IEN))
                       if 'IEN
                           QUIT 
                       Begin DoDot:2
 +4                        SET NUM=NUM+1
                           SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=IEN_U_$GET(^FSC("PRI",IEN,0))
                       End DoDot:2
               End DoDot:1
 +5        QUIT 
 +6       ;
SUB       ;
 +1        NEW FROM,IEN,NUM,PACK,PACKNAME
           SET NUM=0
 +2        SET FROM=""
           FOR 
               SET FROM=$ORDER(^FSC("SUB","B",FROM))
               if FROM=""
                   QUIT 
               Begin DoDot:1
 +3                SET IEN=0
                   FOR 
                       SET IEN=$ORDER(^FSC("SUB","B",FROM,IEN))
                       if 'IEN
                           QUIT 
                       Begin DoDot:2
 +4                        SET PACK=+$PIECE($GET(^FSC("SUB",IEN,0)),U,2)
 +5                        IF 'PACK
                               QUIT 
 +6                        SET PACKNAME=$PIECE($GET(^FSC("PACK",PACK,0)),U)
 +7                        SET NUM=NUM+1
                           SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=IEN_U_$PIECE(^FSC("SUB",IEN,0),U)_" - "_PACKNAME_U_$PIECE(^(0),U)
                       End DoDot:2
               End DoDot:1
 +8        QUIT 
 +9       ;
SUBPACK(PACK) ;
 +1        NEW FROM,IEN,LINE,NAME,NUM,PACKNAME
           KILL ^TMP("FSC TEMP",$JOB)
 +2        SET PACKNAME=$PIECE($GET(^FSC("PACK",PACK,0)),U)
 +3        SET IEN=0
           FOR 
               SET IEN=$ORDER(^FSC("SUB","AC",PACK,IEN))
               if IEN=""
                   QUIT 
               Begin DoDot:1
 +4                SET NAME=$PIECE($GET(^FSC("SUB",IEN,0)),U)
 +5                IF '$LENGTH(NAME)
                       QUIT 
 +6                SET ^TMP("FSC TEMP",$JOB,NAME,IEN)=IEN_U_NAME_" - "_PACKNAME_U_NAME
               End DoDot:1
 +7        SET NUM=0
 +8        SET NAME=""
           FOR 
               SET NAME=$ORDER(^TMP("FSC TEMP",$JOB,NAME))
               if NAME=""
                   QUIT 
               Begin DoDot:1
 +9                SET IEN=0
                   FOR 
                       SET IEN=$ORDER(^TMP("FSC TEMP",$JOB,NAME,IEN))
                       if IEN<1
                           QUIT 
                       SET LINE=^(IEN)
                       Begin DoDot:2
 +10                       SET NUM=NUM+1
 +11                       SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=LINE
                       End DoDot:2
               End DoDot:1
 +12       KILL ^TMP("FSC TEMP",$JOB)
 +13       QUIT 
 +14      ;
ISC       ;
 +1        NEW FROM,IEN,NUM
           SET NUM=0
 +2        SET FROM=""
           FOR 
               SET FROM=$ORDER(^FSC("ISC","B",FROM))
               if FROM=""
                   QUIT 
               Begin DoDot:1
 +3                SET IEN=0
                   FOR 
                       SET IEN=$ORDER(^FSC("ISC","B",FROM,IEN))
                       if 'IEN
                           QUIT 
                       Begin DoDot:2
 +4                        SET NUM=NUM+1
                           SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=IEN_U_$GET(^FSC("ISC",IEN,0))
                       End DoDot:2
               End DoDot:1
 +5        QUIT 
 +6       ;
FUNC      ;
 +1        NEW FROM,IEN,NUM,ZERO
           SET NUM=0
 +2        SET FROM=""
           FOR 
               SET FROM=$ORDER(^FSC("FUNC","B",FROM))
               if FROM=""
                   QUIT 
               Begin DoDot:1
 +3                SET IEN=0
                   FOR 
                       SET IEN=$ORDER(^FSC("FUNC","B",FROM,IEN))
                       if 'IEN
                           QUIT 
                       Begin DoDot:2
 +4                        SET ZERO=$GET(^FSC("FUNC",IEN,0))
                           if '$LENGTH(ZERO)
                               QUIT 
                           if $PIECE(ZERO,U,2)
                               QUIT 
 +5                        SET NUM=NUM+1
                           SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=IEN_U_ZERO
                       End DoDot:2
               End DoDot:1
 +6        QUIT 
 +7       ;
TASK      ;
 +1        NEW FROM,IEN,NUM,ZERO
           SET NUM=0
 +2        SET FROM=""
           FOR 
               SET FROM=$ORDER(^FSC("TASK","B",FROM))
               if FROM=""
                   QUIT 
               Begin DoDot:1
 +3                SET IEN=0
                   FOR 
                       SET IEN=$ORDER(^FSC("TASK","B",FROM,IEN))
                       if 'IEN
                           QUIT 
                       Begin DoDot:2
 +4                        SET ZERO=$GET(^FSC("TASK",IEN,0))
                           if '$LENGTH(ZERO)
                               QUIT 
                           if $PIECE(ZERO,U,2)
                               QUIT 
 +5                        SET NUM=NUM+1
                           SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=IEN_U_ZERO
                       End DoDot:2
               End DoDot:1
 +6        QUIT 
 +7       ;
LTYPE     ;
 +1        NEW FROM,IEN,NUM
           SET NUM=0
 +2        SET FROM=""
           FOR 
               SET FROM=$ORDER(^FSC("LTYPE","B",FROM))
               if FROM=""
                   QUIT 
               Begin DoDot:1
 +3                SET IEN=0
                   FOR 
                       SET IEN=$ORDER(^FSC("LTYPE","B",FROM,IEN))
                       if 'IEN
                           QUIT 
                       Begin DoDot:2
 +4                        SET NUM=NUM+1
                           SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=IEN_U_$GET(^FSC("LTYPE",IEN,0))
                       End DoDot:2
               End DoDot:1
 +5        QUIT 
 +6       ;
PACKGP    ;
 +1        NEW FROM,IEN,NUM
           SET NUM=0
 +2        SET FROM=""
           FOR 
               SET FROM=$ORDER(^FSC("PACKG","B",FROM))
               if FROM=""
                   QUIT 
               Begin DoDot:1
 +3                SET IEN=0
                   FOR 
                       SET IEN=$ORDER(^FSC("PACKG","B",FROM,IEN))
                       if 'IEN
                           QUIT 
                       Begin DoDot:2
 +4                        SET NUM=NUM+1
                           SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=IEN_U_$GET(^FSC("PACKG",IEN,0))
                       End DoDot:2
               End DoDot:1
 +5        QUIT 
 +6       ;
VISN      ;
 +1        NEW FROM,IEN,NUM
           SET NUM=0
 +2        SET FROM=""
           FOR 
               SET FROM=$ORDER(^FSC("VISN","B",FROM))
               if FROM=""
                   QUIT 
               Begin DoDot:1
 +3                SET IEN=0
                   FOR 
                       SET IEN=$ORDER(^FSC("VISN","B",FROM,IEN))
                       if 'IEN
                           QUIT 
                       Begin DoDot:2
 +4                        SET NUM=NUM+1
                           SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=IEN_U_$GET(^FSC("VISN",IEN,0))
                       End DoDot:2
               End DoDot:1
 +5        QUIT 
 +6       ;
WEB(PACK) ;
 +1        NEW IEN,NUM
           SET NUM=0
 +2        SET IEN=0
           FOR 
               SET IEN=$ORDER(^FSCD("WEB","C",PACK,IEN))
               if 'IEN
                   QUIT 
               Begin DoDot:1
 +3                SET NUM=NUM+1
                   SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=IEN_U_$GET(^FSCD("WEB",IEN,1))
               End DoDot:1
 +4        QUIT 
EPTYPE    ;
 +1        NEW FROM,IEN,NUM
           SET NUM=0
 +2        SET FROM=""
           FOR 
               SET FROM=$ORDER(^FSC("EPTYPE","B",FROM))
               if FROM=""
                   QUIT 
               Begin DoDot:1
 +3                SET IEN=0
                   FOR 
                       SET IEN=$ORDER(^FSC("EPTYPE","B",FROM,IEN))
                       if 'IEN
                           QUIT 
                       Begin DoDot:2
 +4                        SET NUM=NUM+1
                           SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=IEN_U_$GET(^FSC("EPTYPE",IEN,0))
                       End DoDot:2
               End DoDot:1
 +5        QUIT 
 +6       ;
SYSTEM    ;
 +1        NEW FROM,IEN,NUM
           SET NUM=0
 +2        SET FROM=""
           FOR 
               SET FROM=$ORDER(^FSC("SYSTEM","B",FROM))
               if FROM=""
                   QUIT 
               Begin DoDot:1
 +3                SET IEN=0
                   FOR 
                       SET IEN=$ORDER(^FSC("SYSTEM","B",FROM,IEN))
                       if 'IEN
                           QUIT 
                       Begin DoDot:2
 +4                        SET NUM=NUM+1
                           SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=IEN_U_$GET(^FSC("SYSTEM",IEN,0))
                       End DoDot:2
               End DoDot:1
 +5        QUIT 
 +6       ;
FIELD     ;
 +1        NEW FROM,IEN,NUM
           SET NUM=0
 +2        SET FROM=""
           FOR 
               SET FROM=$ORDER(^FSC("FLD","B",FROM))
               if FROM=""
                   QUIT 
               Begin DoDot:1
 +3                SET IEN=0
                   FOR 
                       SET IEN=$ORDER(^FSC("FLD","B",FROM,IEN))
                       if 'IEN
                           QUIT 
                       Begin DoDot:2
 +4                        SET NUM=NUM+1
                           SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=IEN_U_$GET(^FSC("FLD",IEN,0))
                       End DoDot:2
               End DoDot:1
 +5        QUIT 
 +6       ;
UPACK     ;
 +1        NEW CNT,LINE,NUM,PACK
 +2        SET (CNT,NUM)=0
           FOR 
               SET NUM=$ORDER(^FSC("SPEC",DUZ,30,NUM))
               if NUM<1
                   QUIT 
               SET PACK=+$GET(^(NUM,0))
               IF PACK
                   Begin DoDot:1
 +3                    SET LINE=$GET(^FSC("PACK",PACK,0))
 +4                    IF '$LENGTH(LINE)
                           QUIT 
 +5                    SET CNT=CNT+1
                       SET ^TMP("FSCRPC",$JOB,"OUTPUT",CNT)=PACK_U_LINE
                   End DoDot:1
 +6        QUIT 
 +7       ;
USORT     ;
 +1        NEW DESCEND,FIELD,LINE,LINE1,NUM,SUBNUM
 +2        SET NUM=0
           FOR 
               SET NUM=$ORDER(^FSC("FORMAT","C",DUZ,NUM))
               if NUM<1
                   QUIT 
               SET LINE=$GET(^FSC("FORMAT",NUM,0))
               IF $PIECE(LINE,U,2)="S"
                   Begin DoDot:1
 +3                    SET FIELD=""
                       SET DESCEND=""
 +4                    SET SUBNUM=0
                       FOR 
                           SET SUBNUM=$ORDER(^FSC("FORMAT",NUM,2,SUBNUM))
                           if SUBNUM<1
                               QUIT 
                           SET LINE1=$GET(^(SUBNUM,0))
                           Begin DoDot:2
 +5                            IF +LINE1<1
                                   QUIT 
 +6                            SET DESCEND=$PIECE(LINE1,U,8)
                               IF 'DESCEND
                                   SET DESCEND=0
 +7                            SET FIELD=FIELD_$PIECE(LINE1,U)_":"_DESCEND_";"
                           End DoDot:2
 +8                    SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=NUM_U_LINE
                       SET $PIECE(^(NUM),U,7)=FIELD
                   End DoDot:1
 +9        QUIT 
 +10      ;
UDISPLAY  ;
 +1        NEW FIELD,LINE,LINE1,NUM,SUBNUM
 +2        SET NUM=0
           FOR 
               SET NUM=$ORDER(^FSC("FORMAT","C",DUZ,NUM))
               if NUM<1
                   QUIT 
               SET LINE=$GET(^FSC("FORMAT",NUM,0))
               IF $PIECE(LINE,U,2)="F"
                   Begin DoDot:1
 +3                    SET FIELD=""
 +4                    SET SUBNUM=0
                       FOR 
                           SET SUBNUM=$ORDER(^FSC("FORMAT",NUM,2,SUBNUM))
                           if SUBNUM<1
                               QUIT 
                           SET LINE1=$GET(^(SUBNUM,0))
                           Begin DoDot:2
 +5                            IF +LINE1<1
                                   QUIT 
 +6                            SET FIELD=FIELD_$PIECE(LINE1,U)_";"
                           End DoDot:2
 +7                    SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=NUM_U_LINE
                       SET $PIECE(^(NUM),U,7)=FIELD
                   End DoDot:1
 +8        QUIT 
 +9       ;
SORT      ;
 +1        NEW DESCEND,FIELD,LINE,LINE1,NUM,SUBNUM
 +2        SET NUM=0
           FOR 
               SET NUM=$ORDER(^FSC("FORMAT",NUM))
               if NUM<1
                   QUIT 
               SET LINE=$GET(^(NUM,0))
               IF $PIECE(LINE,U,2)="S"
                   Begin DoDot:1
 +3                    SET FIELD=""
                       SET DESCEND=""
 +4                    SET SUBNUM=0
                       FOR 
                           SET SUBNUM=$ORDER(^FSC("FORMAT",NUM,2,SUBNUM))
                           if SUBNUM<1
                               QUIT 
                           SET LINE1=$GET(^(SUBNUM,0))
                           Begin DoDot:2
 +5                            IF +LINE1<1
                                   QUIT 
 +6                            SET DESCEND=$PIECE(LINE1,U,8)
                               IF 'DESCEND
                                   SET DESCEND=0
 +7                            SET FIELD=FIELD_$PIECE(LINE1,U)_":"_DESCEND_";"
                           End DoDot:2
 +8                    SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=NUM_U_LINE
                       SET $PIECE(^(NUM),U,7)=FIELD
                   End DoDot:1
 +9        QUIT 
 +10      ;
DISPLAY   ;
 +1        NEW FIELD,LINE,LINE1,NUM,SUBNUM
 +2        SET NUM=0
           FOR 
               SET NUM=$ORDER(^FSC("FORMAT",NUM))
               if NUM<1
                   QUIT 
               SET LINE=$GET(^(NUM,0))
               IF $PIECE(LINE,U,2)="F"
                   Begin DoDot:1
 +3                    SET FIELD=""
 +4                    SET SUBNUM=0
                       FOR 
                           SET SUBNUM=$ORDER(^FSC("FORMAT",NUM,2,SUBNUM))
                           if SUBNUM<1
                               QUIT 
                           SET LINE1=$GET(^(SUBNUM,0))
                           Begin DoDot:2
 +5                            IF +LINE1<1
                                   QUIT 
 +6                            SET FIELD=FIELD_$PIECE(LINE1,U)_";"
                           End DoDot:2
 +7                    SET ^TMP("FSCRPC",$JOB,"OUTPUT",NUM)=NUM_U_LINE
                       SET $PIECE(^(NUM),U,7)=FIELD
                   End DoDot:1
 +8        QUIT 
 +9       ;
CLISTS    ;
 +1        NEW CNT,LIST,LISTNAME,NUM,ZERO
 +2        SET CNT=0
 +3        SET LISTNAME=""
           FOR 
               SET LISTNAME=$ORDER(^FSC("LIST","B",LISTNAME))
               if LISTNAME=""
                   QUIT 
               Begin DoDot:1
 +4                SET NUM=0
                   FOR 
                       SET NUM=$ORDER(^FSC("LIST","B",LISTNAME,NUM))
                       if NUM<1
                           QUIT 
                       Begin DoDot:2
 +5                        SET ZERO=$GET(^FSC("LIST",NUM,0))
 +6                        IF $LENGTH(ZERO)
                               IF '$PIECE(ZERO,U,2)
                                   Begin DoDot:3
 +7                                    SET CNT=CNT+1
 +8                                    SET ^TMP("FSCRPC",$JOB,"OUTPUT",CNT)=NUM_U_ZERO
                                   End DoDot:3
                       End DoDot:2
               End DoDot:1
 +9        QUIT 
 +10      ;
ULISTS    ;
 +1        NEW CNT,LINE,LIST,LISTNAME,NUM,USER,ZERO
           KILL ^TMP("FSC MERGE",$JOB)
 +2        SET USER=+$PIECE(FILE,";",2)
 +3        IF '$DATA(^VA(200,USER,0))
               QUIT 
 +4        SET CNT=0
 +5        SET NUM=0
           FOR 
               SET NUM=$ORDER(^FSC("LIST","C",USER,NUM))
               if NUM<1
                   QUIT 
               Begin DoDot:1
 +6                SET ZERO=$GET(^FSC("LIST",NUM,0))
 +7                if '$LENGTH(ZERO)
                       QUIT 
                   if $PIECE(ZERO,U,2)'=USER
                       QUIT 
 +8                SET ^TMP("FSC MERGE",$JOB,$PIECE(ZERO,U),NUM)=NUM_U_ZERO
               End DoDot:1
 +9        SET CNT=0
 +10       SET LISTNAME=""
           FOR 
               SET LISTNAME=$ORDER(^TMP("FSC MERGE",$JOB,LISTNAME))
               if LISTNAME=""
                   QUIT 
               Begin DoDot:1
 +11               SET NUM=0
                   FOR 
                       SET NUM=$ORDER(^TMP("FSC MERGE",$JOB,LISTNAME,NUM))
                       if NUM<1
                           QUIT 
                       SET LINE=^(NUM)
                       Begin DoDot:2
 +12                       SET CNT=CNT+1
 +13                       SET ^TMP("FSCRPC",$JOB,"OUTPUT",CNT)=LINE
                       End DoDot:2
               End DoDot:1
 +14       KILL ^TMP("FSC MERGE",$JOB)
 +15       QUIT