XQ91 ; SEA/MJM - Restrict availability of options (cont.) ;9/29/92 15:06 ;5/13/93 11:46 AM
;;8.0;KERNEL;;Jul 10, 1995
S (XQI,XQJ)=1,XQDF="",(XQTDV,XQTOD)=0 W !
GETDV W !," Enter ",$S($O(XQDV(0))>0!($O(XQOD(0))>0):"another",1:"a")," DEVICE name (or -DEVICE to delete): " R X:DTIME S:'$T X=U G:X[U OUT
I '$L(X) S XQTDV=XQI-1,XQTOD=XQJ-1 G GOTDV
I X["?" S XQH="XQRESTRICT-DEVICE",XQDF=1,XQISV=XQI,XQTDV=XQI-1,XQJSV=XQJ,XQTOD=XQJ-1 D:X="?" EN^XQH D:X="??" LSTDV D:X="???" LSTFIL S XQI=XQISV,XQJ=XQJSV,XQDF="" G GETDV
I X["?" S XQDF=1 D LSTFIL S XQDF="" G GETDV
S XQFL=0 S:"-'"[$E(X,1) X=$E(X,2,99),XQFL=1
S DIC=3.5,DIC(0)="MEZ" D ^DIC I Y<0 W " ??",*7 G GETDV
I XQFL S XQOD(XQJ)=Y,XQJ=XQJ+1,XQFL=0 G GETDV
S XQDV(XQI)=Y,XQI=XQI+1 G GETDV
;
GOTDV ;Remove devices to delete (XQOD) from list of devices to add (XQDV)
I 'XQTOD!('XQTDV) G OK
S XQNDV=XQTDV,XQNOD=XQTOD,XQFL=0 F XQI=1:1 K:XQFL XQDV(XQI-1) S:XQFL XQTDV=XQTDV-1 Q:(XQI>XQNDV) S XQFL=0 F XQJ=1:1 Q:(XQJ>XQNOD) I $D(XQOD(XQJ))#2,XQDV(XQI)=XQOD(XQJ) K XQOD(XQJ) S XQFL=1,XQTOD=XQTOD-1
OK ;
S XQFL2=1
LSTOP ;
I $O(XQOP(0))="" W !!,"You have not yet selected any options." Q
W !!,"You've selected the following options: ",! S XQJ=0,XQI=IOM\15 F XQK=0:1 S XQJ=$O(XQOP(XQJ)) Q:XQJ="" W:'(XQK#XQI) ! W ?(XQK#XQI*15),$P(^DIC(19,XQJ,0),U,1)
Q:'XQFL2 S XQFL2=0
;
LSTRES ;List restrictions to be placed on all options
I $L(XQDR) W !!,"These restrictions will be updated for all options selected:",!
F XQI=1:1:5 I $D(XQFLD(XQI,"V")) W !,$P(XQFLD(XQI,0),U,1),": ",XQFLD(XQI,"V")
;
LSTDV ;List PERMITTED DEVICES to be added and deleted
S XQT=IOM\10
I (XQTDV>0) W !!,"You will add these PERMITTED DEVICES to all options chosen:",! S XQI=0,XQD=-1 F Q:(XQI+1>XQTDV) S XQD=$O(XQDV(XQD)) Q:XQD="" W:'(XQI#XQT) ! W ?(XQI#XQT*10),$P(XQDV(XQD),U,2) S XQI=XQI+1
I (XQTOD>0) W !!,$S(XQTDV:"And you ",1:"You "),"will delete these PERMITTED DEVICES from all options chosen:",! S XQI=0,XQD=-1 F Q:(XQI+1>XQTOD) S XQD=$O(XQOD(XQD)) Q:XQD="" W:'(XQI#XQT) ! W ?(XQI#XQT*10),$P(XQOD(XQD),U,2) S XQI=XQI+1
I XQDF S XQDF="" Q
;
OK1 R !!,"Do you wish to proceed? YES// ",X:DTIME S:'$T X=U G:X[U OUT G:(X["N"!(X["n")) OP^XQ9 I '(X["Y"!(X["y")!'$L(X)) W *7," ??",!,"Enter 'Y' or 'N'" G OK1
;
ACT ;Stuff the restrictions and devices into the OPTION file
S DIE=19,DA=0 F XQI=1:1 S DA=$O(XQOP(DA)),DR=XQDR Q:DA="" W !,$P(^DIC(19,DA,0),U,1) D ^DIE W "*" D:(XQTOD>0) KILDV I (XQTDV>0) S XQN=-1 F S XQN=$O(XQDV(XQN)) Q:XQN="" S DR="3.96///"_$P(XQDV(XQN),U,2) D ^DIE W "+"
G INIT^XQ9
;
KILDV ;Remove PERMITTED DEVICE from option
S DIC="^DIC(19,"_DA_",3.96,",DIK=DIC,DIC(0)="MEZ",XQN=-1,DA(1)=DA
F S XQN=$O(XQOD(XQN)) Q:XQN="" S X=$P(XQOD(XQN),U,2) D ^DIC S DA=+Y D ^DIK S DA=DA(1) W "-"
Q
LSTFIL ;Show OPTION or DEVICE file
W !,"Do you want to see the ",$S(XQDF:"DEVICE",1:"OPTION")," file? NO// " R X:DTIME S:'$T X="N" Q:X'["Y"&(X'["y") S X="?",DIC=$S(XQDF:3.5,1:"^DIC(19,"),DIC(0)="Q" D ^DIC K DIC S XQDF=""
Q
;
OUT ;
K XQOP,XQFLD,XQI,XQISV,XQJ,XQJSV,XQDV,XQOD,XQTDV,XQNDV,XQTOD,XQNOD,XQDF,XQFL,XQFL2,XQD,XQDR,XQK,XQM,XQN,XQR,XQT
K DIC,DIK,DIE,DR,DA,DI,DISYS,DLAYGO,DQ,D0,D1,I,J,K,L,X,Y,XY,%,%Y,C,POP
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXQ91 3221 printed Nov 22, 2024@17:15:22 Page 2
XQ91 ; SEA/MJM - Restrict availability of options (cont.) ;9/29/92 15:06 ;5/13/93 11:46 AM
+1 ;;8.0;KERNEL;;Jul 10, 1995
+2 SET (XQI,XQJ)=1
SET XQDF=""
SET (XQTDV,XQTOD)=0
WRITE !
GETDV WRITE !," Enter ",$SELECT($ORDER(XQDV(0))>0!($ORDER(XQOD(0))>0):"another",1:"a")," DEVICE name (or -DEVICE to delete): "
READ X:DTIME
if '$TEST
SET X=U
if X[U
GOTO OUT
+1 IF '$LENGTH(X)
SET XQTDV=XQI-1
SET XQTOD=XQJ-1
GOTO GOTDV
+2 IF X["?"
SET XQH="XQRESTRICT-DEVICE"
SET XQDF=1
SET XQISV=XQI
SET XQTDV=XQI-1
SET XQJSV=XQJ
SET XQTOD=XQJ-1
if X="?"
DO EN^XQH
if X="??"
DO LSTDV
if X="???"
DO LSTFIL
SET XQI=XQISV
SET XQJ=XQJSV
SET XQDF=""
GOTO GETDV
+3 IF X["?"
SET XQDF=1
DO LSTFIL
SET XQDF=""
GOTO GETDV
+4 SET XQFL=0
if "-'"[$EXTRACT(X,1)
SET X=$EXTRACT(X,2,99)
SET XQFL=1
+5 SET DIC=3.5
SET DIC(0)="MEZ"
DO ^DIC
IF Y<0
WRITE " ??",*7
GOTO GETDV
+6 IF XQFL
SET XQOD(XQJ)=Y
SET XQJ=XQJ+1
SET XQFL=0
GOTO GETDV
+7 SET XQDV(XQI)=Y
SET XQI=XQI+1
GOTO GETDV
+8 ;
GOTDV ;Remove devices to delete (XQOD) from list of devices to add (XQDV)
+1 IF 'XQTOD!('XQTDV)
GOTO OK
+2 SET XQNDV=XQTDV
SET XQNOD=XQTOD
SET XQFL=0
FOR XQI=1:1
if XQFL
KILL XQDV(XQI-1)
if XQFL
SET XQTDV=XQTDV-1
if (XQI>XQNDV)
QUIT
SET XQFL=0
FOR XQJ=1:1
if (XQJ>XQNOD)
QUIT
IF $DATA(XQOD(XQJ))#2
IF XQDV(XQI)=XQOD(XQJ)
KILL XQOD(XQJ)
SET XQFL=1
SET XQTOD=XQTOD-1
OK ;
+1 SET XQFL2=1
LSTOP ;
+1 IF $ORDER(XQOP(0))=""
WRITE !!,"You have not yet selected any options."
QUIT
+2 WRITE !!,"You've selected the following options: ",!
SET XQJ=0
SET XQI=IOM\15
FOR XQK=0:1
SET XQJ=$ORDER(XQOP(XQJ))
if XQJ=""
QUIT
if '(XQK#XQI)
WRITE !
WRITE ?(XQK#XQI*15),$PIECE(^DIC(19,XQJ,0),U,1)
+3 if 'XQFL2
QUIT
SET XQFL2=0
+4 ;
LSTRES ;List restrictions to be placed on all options
+1 IF $LENGTH(XQDR)
WRITE !!,"These restrictions will be updated for all options selected:",!
+2 FOR XQI=1:1:5
IF $DATA(XQFLD(XQI,"V"))
WRITE !,$PIECE(XQFLD(XQI,0),U,1),": ",XQFLD(XQI,"V")
+3 ;
LSTDV ;List PERMITTED DEVICES to be added and deleted
+1 SET XQT=IOM\10
+2 IF (XQTDV>0)
WRITE !!,"You will add these PERMITTED DEVICES to all options chosen:",!
SET XQI=0
SET XQD=-1
FOR
if (XQI+1>XQTDV)
QUIT
SET XQD=$ORDER(XQDV(XQD))
if XQD=""
QUIT
if '(XQI#XQT)
WRITE !
WRITE ?(XQI#XQT*10),$PIECE(XQDV(XQD),U,2)
SET XQI=XQI+1
+3 IF (XQTOD>0)
WRITE !!,$SELECT(XQTDV:"And you ",1:"You "),"will delete these PERMITTED DEVICES from all options chosen:",!
SET XQI=0
SET XQD=-1
FOR
if (XQI+1>XQTOD)
QUIT
SET XQD=$ORDER(XQOD(XQD))
if XQD=""
QUIT
if '(XQI#XQT)
WRITE !
WRITE ?(XQI#XQT*10),$PIECE(XQOD(XQD),U,2)
SET XQI=XQI+1
+4 IF XQDF
SET XQDF=""
QUIT
+5 ;
OK1 READ !!,"Do you wish to proceed? YES// ",X:DTIME
if '$TEST
SET X=U
if X[U
GOTO OUT
if (X["N"!(X["n"))
GOTO OP^XQ9
IF '(X["Y"!(X["y")!'$LENGTH(X))
WRITE *7," ??",!,"Enter 'Y' or 'N'"
GOTO OK1
+1 ;
ACT ;Stuff the restrictions and devices into the OPTION file
+1 SET DIE=19
SET DA=0
FOR XQI=1:1
SET DA=$ORDER(XQOP(DA))
SET DR=XQDR
if DA=""
QUIT
WRITE !,$PIECE(^DIC(19,DA,0),U,1)
DO ^DIE
WRITE "*"
if (XQTOD>0)
DO KILDV
IF (XQTDV>0)
SET XQN=-1
FOR
SET XQN=$ORDER(XQDV(XQN))
if XQN=""
QUIT
SET DR="3.96///"_$PIECE(XQDV(XQN),U,2)
DO ^DIE
WRITE "+"
+2 GOTO INIT^XQ9
+3 ;
KILDV ;Remove PERMITTED DEVICE from option
+1 SET DIC="^DIC(19,"_DA_",3.96,"
SET DIK=DIC
SET DIC(0)="MEZ"
SET XQN=-1
SET DA(1)=DA
+2 FOR
SET XQN=$ORDER(XQOD(XQN))
if XQN=""
QUIT
SET X=$PIECE(XQOD(XQN),U,2)
DO ^DIC
SET DA=+Y
DO ^DIK
SET DA=DA(1)
WRITE "-"
+3 QUIT
LSTFIL ;Show OPTION or DEVICE file
+1 WRITE !,"Do you want to see the ",$SELECT(XQDF:"DEVICE",1:"OPTION")," file? NO// "
READ X:DTIME
if '$TEST
SET X="N"
if X'["Y"&(X'["y")
QUIT
SET X="?"
SET DIC=$SELECT(XQDF:3.5,1:"^DIC(19,")
SET DIC(0)="Q"
DO ^DIC
KILL DIC
SET XQDF=""
+2 QUIT
+3 ;
OUT ;
+1 KILL XQOP,XQFLD,XQI,XQISV,XQJ,XQJSV,XQDV,XQOD,XQTDV,XQNDV,XQTOD,XQNOD,XQDF,XQFL,XQFL2,XQD,XQDR,XQK,XQM,XQN,XQR,XQT
+2 KILL DIC,DIK,DIE,DR,DA,DI,DISYS,DLAYGO,DQ,D0,D1,I,J,K,L,X,Y,XY,%,%Y,C,POP
+3 QUIT