FSCLDS ;SLC/STAFF-NOIS List Definition Save ;1/3/97  17:03
 ;;1.1;NOIS;;Sep 06, 1998
 ;
SAVE(FSCLNAME,FSCLNUM,OWNER,DESC,TYPE,NOTIFY) ; from FSCLD
 N CNT,DA,DIC,DIE,DLAYGO,DR,EXT,FCOND,FCV,LINE,NUM,OK,OP,OPER,QDESC,STEP,X,Y K DIC
 S OWNER=$G(OWNER) I 'OWNER S OWNER=DUZ
 I 'FSCLNUM D
 .S (DIC,DLAYGO)=7107.1,DIC(0)="L",X=FSCLNAME D ^DIC K DIC I '$P(Y,U,3) W !,"Not defined.",$C(7) H 2 Q
 .S FSCLNUM=+Y
 I 'FSCLNUM Q
 S DA=+FSCLNUM,DIE=7107.1,DR=$S(FSCLNAME'=$P(^FSC("LIST",FSCLNUM,0),U):".01///"_FSCLNAME_";",1:"")
 S DR=DR_"1///`"_OWNER_$S($D(TYPE):";2///"_TYPE,1:"")
 I $L($G(NOTIFY)) S DR=DR_";5///"_$P(NOTIFY,U)_";6///"_$P(NOTIFY,U,2)
 I TYPE="A" S DR=DR_";7///WEEKLY"
 L +^FSC("LIST",FSCLNUM):30 I '$T D BAD Q
 D ^DIE
 I $D(DESC) D
 .K ^FSC("LIST",FSCLNUM,2)
 .S CNT=0 F  S CNT=$O(DESC(CNT)) Q:CNT<1  S ^FSC("LIST",FSCLNUM,2,CNT,0)=DESC(CNT,0)
 .I $O(^FSC("LIST",FSCLNUM,2,0)) S ^(0)="^^"_CNT_U_CNT_U_DT_U
 I $G(TYPE)="S"!$D(^TMP("FSC DEFINE",$J)) D
 .K ^FSC("LIST",FSCLNUM,1),^(3)
 .I '($G(TYPE)="A"!($G(TYPE)="M")) Q
 .S (NUM,OP)=0 F  S OP=$O(^TMP("FSC DEFINE",$J,OP)) Q:OP<1  S OPER=$E(^(OP,0)) D
 ..Q:'$L(OPER)
 ..S STEP=0 F  S STEP=$O(^TMP("FSC DEFINE",$J,OP,STEP)) Q:STEP<1  D
 ...S FCOND=0 F  S FCOND=$O(^TMP("FSC DEFINE",$J,OP,STEP,FCOND))  Q:FCOND<1  S FCV=^(FCOND),EXT=$G(^(FCOND,1)) D
 ....S EXT=$S(EXT="and":"A",EXT="or":"O",1:"")
 ....S NUM=NUM+1,^FSC("LIST",FSCLNUM,1,NUM,0)=NUM_U_OPER_U_EXT_U_$P(FCV,U)_U_+$O(^FSC("COND","C",$P(FCV,U,2),0))_U_$P(FCV,U,3)
 ....S ^FSC("LIST",FSCLNUM,1,"B",NUM,NUM)=""
 ....S OPER=""
 .S ^FSC("LIST",FSCLNUM,1,0)="^7107.11^"_NUM_U_NUM
 .S (CNT,LINE)=0 F  S LINE=$O(^TMP("FSC DEFINE",$J,"DESC",LINE)) Q:LINE<1  S QDESC=^(LINE) D
 ..S CNT=CNT+1,^FSC("LIST",FSCLNUM,3,CNT,0)=QDESC
 .S ^FSC("LIST",FSCLNUM,3,0)="^^"_CNT_U_CNT_U_DT_U
 L -^FSC("LIST",FSCLNUM)
 L +^XTMP("FSC LIST DEF",FSCLNUM):20 I '$T D BAD Q
 E  D BUILD^FSCLDU(FSCLNUM,.OK) I 'OK D BAD
 L -^XTMP("FSC LIST DEF",FSCLNUM)
 I $D(VALMAR) D ENTRY^FSCLMM,HEADER^FSCLMM
 Q
 ;
BAD ; from FSCLMPMS, FSCLMPS
 W !,"This list appears to be defined incorrectly, please recheck.",!,$C(7)
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HFSCLDS   2136     printed  Sep 23, 2025@19:54:18                                                                                                                                                                                                      Page 2
FSCLDS    ;SLC/STAFF-NOIS List Definition Save ;1/3/97  17:03
 +1       ;;1.1;NOIS;;Sep 06, 1998
 +2       ;
SAVE(FSCLNAME,FSCLNUM,OWNER,DESC,TYPE,NOTIFY) ; from FSCLD
 +1        NEW CNT,DA,DIC,DIE,DLAYGO,DR,EXT,FCOND,FCV,LINE,NUM,OK,OP,OPER,QDESC,STEP,X,Y
           KILL DIC
 +2        SET OWNER=$GET(OWNER)
           IF 'OWNER
               SET OWNER=DUZ
 +3        IF 'FSCLNUM
               Begin DoDot:1
 +4                SET (DIC,DLAYGO)=7107.1
                   SET DIC(0)="L"
                   SET X=FSCLNAME
                   DO ^DIC
                   KILL DIC
                   IF '$PIECE(Y,U,3)
                       WRITE !,"Not defined.",$CHAR(7)
                       HANG 2
                       QUIT 
 +5                SET FSCLNUM=+Y
               End DoDot:1
 +6        IF 'FSCLNUM
               QUIT 
 +7        SET DA=+FSCLNUM
           SET DIE=7107.1
           SET DR=$SELECT(FSCLNAME'=$PIECE(^FSC("LIST",FSCLNUM,0),U):".01///"_FSCLNAME_";",1:"")
 +8        SET DR=DR_"1///`"_OWNER_$SELECT($DATA(TYPE):";2///"_TYPE,1:"")
 +9        IF $LENGTH($GET(NOTIFY))
               SET DR=DR_";5///"_$PIECE(NOTIFY,U)_";6///"_$PIECE(NOTIFY,U,2)
 +10       IF TYPE="A"
               SET DR=DR_";7///WEEKLY"
 +11       LOCK +^FSC("LIST",FSCLNUM):30
           IF '$TEST
               DO BAD
               QUIT 
 +12       DO ^DIE
 +13       IF $DATA(DESC)
               Begin DoDot:1
 +14               KILL ^FSC("LIST",FSCLNUM,2)
 +15               SET CNT=0
                   FOR 
                       SET CNT=$ORDER(DESC(CNT))
                       if CNT<1
                           QUIT 
                       SET ^FSC("LIST",FSCLNUM,2,CNT,0)=DESC(CNT,0)
 +16               IF $ORDER(^FSC("LIST",FSCLNUM,2,0))
                       SET ^(0)="^^"_CNT_U_CNT_U_DT_U
               End DoDot:1
 +17       IF $GET(TYPE)="S"!$DATA(^TMP("FSC DEFINE",$JOB))
               Begin DoDot:1
 +18               KILL ^FSC("LIST",FSCLNUM,1),^(3)
 +19               IF '($GET(TYPE)="A"!($GET(TYPE)="M"))
                       QUIT 
 +20               SET (NUM,OP)=0
                   FOR 
                       SET OP=$ORDER(^TMP("FSC DEFINE",$JOB,OP))
                       if OP<1
                           QUIT 
                       SET OPER=$EXTRACT(^(OP,0))
                       Begin DoDot:2
 +21                       if '$LENGTH(OPER)
                               QUIT 
 +22                       SET STEP=0
                           FOR 
                               SET STEP=$ORDER(^TMP("FSC DEFINE",$JOB,OP,STEP))
                               if STEP<1
                                   QUIT 
                               Begin DoDot:3
 +23                               SET FCOND=0
                                   FOR 
                                       SET FCOND=$ORDER(^TMP("FSC DEFINE",$JOB,OP,STEP,FCOND))
                                       if FCOND<1
                                           QUIT 
                                       SET FCV=^(FCOND)
                                       SET EXT=$GET(^(FCOND,1))
                                       Begin DoDot:4
 +24                                       SET EXT=$SELECT(EXT="and":"A",EXT="or":"O",1:"")
 +25                                       SET NUM=NUM+1
                                           SET ^FSC("LIST",FSCLNUM,1,NUM,0)=NUM_U_OPER_U_EXT_U_$PIECE(FCV,U)_U_+$ORDER(^FSC("COND","C",$PIECE(FCV,U,2),0))_U_$PIECE(FCV,U,3)
 +26                                       SET ^FSC("LIST",FSCLNUM,1,"B",NUM,NUM)=""
 +27                                       SET OPER=""
                                       End DoDot:4
                               End DoDot:3
                       End DoDot:2
 +28               SET ^FSC("LIST",FSCLNUM,1,0)="^7107.11^"_NUM_U_NUM
 +29               SET (CNT,LINE)=0
                   FOR 
                       SET LINE=$ORDER(^TMP("FSC DEFINE",$JOB,"DESC",LINE))
                       if LINE<1
                           QUIT 
                       SET QDESC=^(LINE)
                       Begin DoDot:2
 +30                       SET CNT=CNT+1
                           SET ^FSC("LIST",FSCLNUM,3,CNT,0)=QDESC
                       End DoDot:2
 +31               SET ^FSC("LIST",FSCLNUM,3,0)="^^"_CNT_U_CNT_U_DT_U
               End DoDot:1
 +32       LOCK -^FSC("LIST",FSCLNUM)
 +33       LOCK +^XTMP("FSC LIST DEF",FSCLNUM):20
           IF '$TEST
               DO BAD
               QUIT 
 +34      IF '$TEST
               DO BUILD^FSCLDU(FSCLNUM,.OK)
               IF 'OK
                   DO BAD
 +35       LOCK -^XTMP("FSC LIST DEF",FSCLNUM)
 +36       IF $DATA(VALMAR)
               DO ENTRY^FSCLMM
               DO HEADER^FSCLMM
 +37       QUIT 
 +38      ;
BAD       ; from FSCLMPMS, FSCLMPS
 +1        WRITE !,"This list appears to be defined incorrectly, please recheck.",!,$CHAR(7)
 +2        QUIT