XINDX6 ;ISC/REL,GRK - GET SET OF ROUTINES TO INDEX ;07/22/08 13:54
;;7.3;TOOLKIT;**20,27,66,110,132**;Apr 25, 1995;Build 14
; Per VHA Directive 2004-038, this routine should not be modified.
;INP(1=Print more than warnings, 2= Print routines, 3= Print warnings, 4= Print DDs & Functions & Options, 5= Type of List, 6= Summary only, 7= Save Parameters
;INP(8= Index called routines, 9= Include the Compiled template routines, 10 = Build or Package file DA
;INP(11= execute to check for version number on second line, 12= Patch number check.
N %A2,%I,%IN2,%IN3,%N,%QMK,%YN,AC,ANS,C8,CM,CX,DEF,DDOT,DIF,E,EC,ER
N INDHDR,INP,LI,LL,LN,LV,N,NOA,OP,PG,QUES,RN,T,XCNP,XX1,XX2,Z,Z1,INDXDT
K ^UTILITY($J),ZTSK,ZTDTH,ZTIO
S:'$D(DTIME)#2 DTIME=360
D HOME^%ZIS,HDR^XINDX7
D ASKRTN,PARAM
I $D(^DIC(9.4))!$D(^DIC(9.6)) D ^XINDX10 G END:$D(DUOUT) S INDDA=DA I DA>0,INP(10)'=9.7 D ANS("Include the compiled template routines: N//","NY") G:X="^" END S:"Nn"'[X INP(9)=1
G END:(NRO'>0)&(INDDA'>0)
D ANS("Print more than compiled errors and warnings? YES//","YN","Print detailed info") G:X="^" END S INP(1)="Yy"[X G:'INP(1) L7
D ANS("Print summary only? NO//","NY","Skip detail on each routine") G:X="^" END S INP(6)="Yy"[X G L7:INP(6)
D ANS("Print routines? YES//","YN","Print routines code also") G:X="^" END S INP(2)="Yy"[X
I INP(2) D ANS("Print (R)egular,(S)tructured or (B)oth? R//","RLIST") G:X="^" END S INP(5)=X
I INDDA>0,INP(10)'=9.7 D ANS("Print the DDs, Functions, and Options? YES//","YN","Gather other package code.") G:X="^" END S INP(4)="Yy"[X
D ANS("Print errors and warnings with each routine? YES//","YN") G:X="^" END S INP(3)="Yy"[X
L7 I $D(^DIC(9.8,0)),$D(DUZ) D ANS("Save parameters in ROUTINE file? NO//","NY","Update the ROUTINE file with details") G:X="^" END S INP(7)="Yy"[X
D ANS("Index all called routines? NO//","NY","Add called routines") G:X="^" END S INP(8)="Yy"[X
DEVICE W:NRO>2 !!,$C(7),"This report could take some time, Remember to QUEUE the report.",! K IOP,%ZIS S %ZIS="QM",%ZIS("B")="" D ^%ZIS K %ZIS I POP W !,$C(7),"XINDEX terminated. No device specified." G END
;S IOP=ION_";"_IOST_$S($D(IO("DOC")):";"_IO("DOC"),1:";"_IOM_";"_IOSL)
I IO=IO(0),"C"[$E(IOST),$D(IO("Q"))#2 W !,"Do you really mean queue to this device? NO//" D NY I "Nn"[X W !!,"Ok, tell me again ..." K IO("Q") D ^%ZISC G DEVICE
I '$D(IO("Q")) G ALIVE^XINDEX ;Do it now
;Queue Report
S ZTRTN="ALIVE^XINDEX",ZTDESC="XINDEX of "_NRO_" routine"_$S(NRO>1:"s.",1:".") F G="INP(","INDDA","^UTILITY($J,","NRO","INDPM" S ZTSAVE(G)=""
K IO("Q") D ^%ZTLOAD,HOME^%ZIS
;
END K ZTSK,%ZIS G CLEAN^XINDX5
;
PARAM ;Setup Parameters
S Q="""",RTN=0
F I=1:1:10 S INP(I)=0
S (INP(11),INP(12))=""
S INP("MAX")=20000 ;Max routine size
S INP("CMAX")=15000 ;Max Code in routine
S INDDA=0
Q
;
QUICK(RL) ;Quick Report, Just errors on some routines.
N %A2,%I,%IN2,%IN3,%N,%QMK,%YN,AC,ANS,C8,CM,CX,DEF,DDOT,DIF,E,EC,ER
N INDHDR,INDXDT,INP,LI,LL,LN,LV,N,NOA,OP,PG,QUES,RN,T,XCNP,XX1,XX2,Z,Z1
K ^UTILITY($J),ZTSK,ZTDTH,ZTIO
D HOME^%ZIS I '$D(IOP) D HDR^XINDX7
I $D(IOP) S %ZIS="" D ^%ZIS ;Caller can set IOP to send output someplace else
U IO
I $D(RL) F %I=1:1 S Z=$P(RL,",",%I) Q:Z="" S ^UTILITY($J,Z)=""
D ASKRTN,PARAM
I $O(^UTILITY($J,"@"))="" W !,"No Routines to process.",! D ^%ZISC Q
S INP(1)=0,INP(6)=1 ;More then errors,Summary Only
G ALIVE^XINDEX
;
ANS(PR,DEF,HELP) ;Ask question get answer
N % F S Y=1 W !!,PR D @DEF Q:Y
Q
YN S %="Y" D RD Q:"^YyNn"[X W:$D(HELP) !,HELP W !,"Please enter 'Y' or return for YES, 'N' for NO" S Y=0 Q
;
NY S %="N" D RD Q:"^YyNn"[X W:$D(HELP) !,HELP W !,"Please enter 'N' or return for NO, 'Y' for YES" S Y=0 Q
;
RD R X:DTIME S:X["^" X="^" S X=$E($$CASE^XINDX52(X)_%) Q
;
RLIST S %="R" D RD Q:"^RSBF"[X W !,"Please select one of the choices." S Y=0 Q
Q
ASKRTN ;Collect a list of routines to index.
I '$D(^UTILITY($J)),$D(^%ZOSF("RSEL")) X ^("RSEL")
S NRO=0,X=0 F I=0:0 S X=$O(^UTILITY($J,X)) Q:X="" S NRO=NRO+1
Q
W !!,"LIST OF ROUTINES TO BE INDEXED; PRESS RETURN TO TERMINATE LIST",! S NRO=0
R1 R !,"ROUTINE NAME: ",ROU:$S($G(DTIME):DTIME,1:360) Q:ROU=""
I ROU'?1"%".UN&(ROU'?1U.UN) W " INVALID ROUTINE NAME" G R1
I $D(^%ZOSF("TEST")) S X=ROU X ^("TEST") E W " INVALID ROUTINE NAME" G R1
S NRO=NRO+1,^UTILITY($J,ROU)=""
G R1
XINDX6 ;ISC/REL,GRK - GET SET OF ROUTINES TO INDEX ;07/22/08 13:54
+1 ;;7.3;TOOLKIT;**20,27,66,110,132**;Apr 25, 1995;Build 14
+2 ; Per VHA Directive 2004-038, this routine should not be modified.
+3 ;INP(1=Print more than warnings, 2= Print routines, 3= Print warnings, 4= Print DDs & Functions & Options, 5= Type of List, 6= Summary only, 7= Save Parameters
+4 ;INP(8= Index called routines, 9= Include the Compiled template routines, 10 = Build or Package file DA
+5 ;INP(11= execute to check for version number on second line, 12= Patch number check.
+6 NEW %A2,%I,%IN2,%IN3,%N,%QMK,%YN,AC,ANS,C8,CM,CX,DEF,DDOT,DIF,E,EC,ER
+7 NEW INDHDR,INP,LI,LL,LN,LV,N,NOA,OP,PG,QUES,RN,T,XCNP,XX1,XX2,Z,Z1,INDXDT
+8 KILL ^UTILITY($JOB),ZTSK,ZTDTH,ZTIO
+9 IF '$DATA(DTIME)#2
SET DTIME=360
+10 DO HOME^%ZIS
DO HDR^XINDX7
+11 DO ASKRTN
DO PARAM
+12 IF $DATA(^DIC(9.4))!$DATA(^DIC(9.6))
DO ^XINDX10
IF $DATA(DUOUT)
GOTO END
SET INDDA=DA
IF DA>0
IF INP(10)'=9.7
DO ANS("Include the compiled template routines: N//","NY")
IF X="^"
GOTO END
IF "Nn"'[X
SET INP(9)=1
+13 IF (NRO'>0)&(INDDA'>0)
GOTO END
+14 DO ANS("Print more than compiled errors and warnings? YES//","YN","Print detailed info")
IF X="^"
GOTO END
SET INP(1)="Yy"[X
IF 'INP(1)
GOTO L7
+15 DO ANS("Print summary only? NO//","NY","Skip detail on each routine")
IF X="^"
GOTO END
SET INP(6)="Yy"[X
IF INP(6)
GOTO L7
+16 DO ANS("Print routines? YES//","YN","Print routines code also")
IF X="^"
GOTO END
SET INP(2)="Yy"[X
+17 IF INP(2)
DO ANS("Print (R)egular,(S)tructured or (B)oth? R//","RLIST")
IF X="^"
GOTO END
SET INP(5)=X
+18 IF INDDA>0
IF INP(10)'=9.7
DO ANS("Print the DDs, Functions, and Options? YES//","YN","Gather other package code.")
IF X="^"
GOTO END
SET INP(4)="Yy"[X
+19 DO ANS("Print errors and warnings with each routine? YES//","YN")
IF X="^"
GOTO END
SET INP(3)="Yy"[X
L7 IF $DATA(^DIC(9.8,0))
IF $DATA(DUZ)
DO ANS("Save parameters in ROUTINE file? NO//","NY","Update the ROUTINE file with details")
IF X="^"
GOTO END
SET INP(7)="Yy"[X
+1 DO ANS("Index all called routines? NO//","NY","Add called routines")
IF X="^"
GOTO END
SET INP(8)="Yy"[X
DEVICE IF NRO>2
WRITE !!,$CHAR(7),"This report could take some time, Remember to QUEUE the report.",!
KILL IOP,%ZIS
SET %ZIS="QM"
SET %ZIS("B")=""
DO ^%ZIS
KILL %ZIS
IF POP
WRITE !,$CHAR(7),"XINDEX terminated. No device specified."
GOTO END
+1 ;S IOP=ION_";"_IOST_$S($D(IO("DOC")):";"_IO("DOC"),1:";"_IOM_";"_IOSL)
+2 IF IO=IO(0)
IF "C"[$EXTRACT(IOST)
IF $DATA(IO("Q"))#2
WRITE !,"Do you really mean queue to this device? NO//"
DO NY
IF "Nn"[X
WRITE !!,"Ok, tell me again ..."
KILL IO("Q")
DO ^%ZISC
GOTO DEVICE
+3 ;Do it now
IF '$DATA(IO("Q"))
GOTO ALIVE^XINDEX
+4 ;Queue Report
+5 SET ZTRTN="ALIVE^XINDEX"
SET ZTDESC="XINDEX of "_NRO_" routine"_$SELECT(NRO>1:"s.",1:".")
FOR G="INP(","INDDA","^UTILITY($J,","NRO","INDPM"
SET ZTSAVE(G)=""
+6 KILL IO("Q")
DO ^%ZTLOAD
DO HOME^%ZIS
+7 ;
END KILL ZTSK,%ZIS
GOTO CLEAN^XINDX5
+1 ;
PARAM ;Setup Parameters
+1 SET Q=""""
SET RTN=0
+2 FOR I=1:1:10
SET INP(I)=0
+3 SET (INP(11),INP(12))=""
+4 ;Max routine size
SET INP("MAX")=20000
+5 ;Max Code in routine
SET INP("CMAX")=15000
+6 SET INDDA=0
+7 QUIT
+8 ;
QUICK(RL) ;Quick Report, Just errors on some routines.
+1 NEW %A2,%I,%IN2,%IN3,%N,%QMK,%YN,AC,ANS,C8,CM,CX,DEF,DDOT,DIF,E,EC,ER
+2 NEW INDHDR,INDXDT,INP,LI,LL,LN,LV,N,NOA,OP,PG,QUES,RN,T,XCNP,XX1,XX2,Z,Z1
+3 KILL ^UTILITY($JOB),ZTSK,ZTDTH,ZTIO
+4 DO HOME^%ZIS
IF '$DATA(IOP)
DO HDR^XINDX7
+5 ;Caller can set IOP to send output someplace else
IF $DATA(IOP)
SET %ZIS=""
DO ^%ZIS
+6 USE IO
+7 IF $DATA(RL)
FOR %I=1:1
SET Z=$PIECE(RL,",",%I)
IF Z=""
QUIT
SET ^UTILITY($JOB,Z)=""
+8 DO ASKRTN
DO PARAM
+9 IF $ORDER(^UTILITY($JOB,"@"))=""
WRITE !,"No Routines to process.",!
DO ^%ZISC
QUIT
+10 ;More then errors,Summary Only
SET INP(1)=0
SET INP(6)=1
+11 GOTO ALIVE^XINDEX
+12 ;
ANS(PR,DEF,HELP) ;Ask question get answer
+1 NEW %
FOR
SET Y=1
WRITE !!,PR
DO @DEF
IF Y
QUIT
+2 QUIT
YN SET %="Y"
DO RD
IF "^YyNn"[X
QUIT
IF $DATA(HELP)
WRITE !,HELP
WRITE !,"Please enter 'Y' or return for YES, 'N' for NO"
SET Y=0
QUIT
+1 ;
NY SET %="N"
DO RD
IF "^YyNn"[X
QUIT
IF $DATA(HELP)
WRITE !,HELP
WRITE !,"Please enter 'N' or return for NO, 'Y' for YES"
SET Y=0
QUIT
+1 ;
RD READ X:DTIME
IF X["^"
SET X="^"
SET X=$EXTRACT($$CASE^XINDX52(X)_%)
QUIT
+1 ;
RLIST SET %="R"
DO RD
IF "^RSBF"[X
QUIT
WRITE !,"Please select one of the choices."
SET Y=0
QUIT
+1 QUIT
ASKRTN ;Collect a list of routines to index.
+1 IF '$DATA(^UTILITY($JOB))
IF $DATA(^%ZOSF("RSEL"))
XECUTE ^("RSEL")
+2 SET NRO=0
SET X=0
FOR I=0:0
SET X=$ORDER(^UTILITY($JOB,X))
IF X=""
QUIT
SET NRO=NRO+1
+3 QUIT
+4 WRITE !!,"LIST OF ROUTINES TO BE INDEXED; PRESS RETURN TO TERMINATE LIST",!
SET NRO=0
R1 READ !,"ROUTINE NAME: ",ROU:$SELECT($GET(DTIME):DTIME,1:360)
IF ROU=""
QUIT
+1 IF ROU'?1"%".UN&(ROU'?1U.UN)
WRITE " INVALID ROUTINE NAME"
GOTO R1
+2 IF $DATA(^%ZOSF("TEST"))
SET X=ROU
XECUTE ^("TEST")
IF '$TEST
WRITE " INVALID ROUTINE NAME"
GOTO R1
+3 SET NRO=NRO+1
SET ^UTILITY($JOB,ROU)=""
+4 GOTO R1