Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: XINDX6

XINDX6.m

Go to the documentation of this file.
  1. XINDX6 ;ISC/REL,GRK - GET SET OF ROUTINES TO INDEX ;07/22/08 13:54
  1. ;;7.3;TOOLKIT;**20,27,66,110,132,140**;Apr 25, 1995;Build 40
  1. ; Per VHA Directive 2004-038, this routine should not be modified.
  1. ;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
  1. ;INP(8= Index called routines, 9= Include the Compiled template routines, 10 = Build or Package file DA
  1. ;INP(11= execute to check for version number on second line, 12= Patch number check.
  1. N %A2,%I,%IN2,%IN3,%N,%QMK,%YN,AC,ANS,C8,CM,CX,DEF,DDOT,DIF,E,EC,ER
  1. N INDHDR,INP,LI,LL,LN,LV,N,NOA,OP,PG,QUES,RN,T,XCNP,XX1,XX2,Z,Z1,INDXDT
  1. K ^UTILITY($J),ZTSK,ZTDTH,ZTIO
  1. S:'$D(DTIME)#2 DTIME=360
  1. D HOME^%ZIS,HDR^XINDX7
  1. D ASKRTN,PARAM
  1. 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
  1. G END:(NRO'>0)&(INDDA'>0)
  1. 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
  1. D ANS("Print summary only? NO//","NY","Skip detail on each routine") G:X="^" END S INP(6)="Yy"[X G L7:INP(6)
  1. D ANS("Print routines? YES//","YN","Print routines code also") G:X="^" END S INP(2)="Yy"[X
  1. I INP(2) D ANS("Print (R)egular,(S)tructured or (B)oth or Control (F)low ? R//","RLIST") G:X="^" END S INP(5)=X
  1. I INDDA>0,INP(10)'=9.7 D ANS("Print the DDs, Functions, Options, and other package code? YES//","YN","Gather other package code.") G:X="^" END S INP(4)="Yy"[X
  1. D ANS("Print errors and warnings with each routine? YES//","YN") G:X="^" END S INP(3)="Yy"[X
  1. 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
  1. D ANS("Index all called routines? NO//","NY","Add called routines") G:X="^" END S INP(8)="Yy"[X
  1. 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
  1. ;S IOP=ION_";"_IOST_$S($D(IO("DOC")):";"_IO("DOC"),1:";"_IOM_";"_IOSL)
  1. 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
  1. I '$D(IO("Q")) G ALIVE^XINDEX ;Do it now
  1. ;Queue Report
  1. 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)=""
  1. K IO("Q") D ^%ZTLOAD,HOME^%ZIS
  1. ;
  1. END K ZTSK,%ZIS G CLEAN^XINDX5
  1. ;
  1. PARAM ;Setup Parameters
  1. S Q="""",RTN=0
  1. F I=1:1:10 S INP(I)=0
  1. S (INP(11),INP(12))=""
  1. S INP("MAX")=20000 ;Max routine size
  1. S INP("CMAX")=15000 ;Max Code in routine
  1. S INDDA=0
  1. Q
  1. ;
  1. QUICK(RL) ;Quick Report, Just errors on some routines.
  1. N %A2,%I,%IN2,%IN3,%N,%QMK,%YN,AC,ANS,C8,CM,CX,DEF,DDOT,DIF,E,EC,ER
  1. N INDHDR,INDXDT,INP,LI,LL,LN,LV,N,NOA,OP,PG,QUES,RN,T,XCNP,XX1,XX2,Z,Z1
  1. K ^UTILITY($J),ZTSK,ZTDTH,ZTIO
  1. D HOME^%ZIS I '$D(IOP) D HDR^XINDX7
  1. I $D(IOP) S %ZIS="" D ^%ZIS ;Caller can set IOP to send output someplace else
  1. U IO
  1. I $D(RL) F %I=1:1 S Z=$P(RL,",",%I) Q:Z="" S ^UTILITY($J,Z)=""
  1. D ASKRTN,PARAM
  1. I $O(^UTILITY($J,"@"))="" W !,"No Routines to process.",! D ^%ZISC Q
  1. S INP(1)=0,INP(6)=1 ;More then errors,Summary Only
  1. G ALIVE^XINDEX
  1. ;
  1. ANS(PR,DEF,HELP) ;Ask question get answer
  1. N % F S Y=1 W !!,PR D @DEF Q:Y
  1. Q
  1. 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
  1. ;
  1. 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
  1. ;
  1. RD R X:DTIME S:X["^" X="^" S X=$E($$CASE^XINDX52(X)_%) Q
  1. ;
  1. RLIST S %="R" D RD Q:"^RSBF"[X W !,"Please select one of the choices." S Y=0 Q
  1. Q
  1. ASKRTN ;Collect a list of routines to index.
  1. I '$D(^UTILITY($J)),$D(^%ZOSF("RSEL")) X ^("RSEL")
  1. S NRO=0,X=0 F I=0:0 S X=$O(^UTILITY($J,X)) Q:X="" S NRO=NRO+1
  1. Q
  1. W !!,"LIST OF ROUTINES TO BE INDEXED; PRESS RETURN TO TERMINATE LIST",! S NRO=0
  1. R1 R !,"ROUTINE NAME: ",ROU:$S($G(DTIME):DTIME,1:360) Q:ROU=""
  1. I ROU'?1"%".UN&(ROU'?1U.UN) W " INVALID ROUTINE NAME" G R1
  1. I $D(^%ZOSF("TEST")) S X=ROU X ^("TEST") E W " INVALID ROUTINE NAME" G R1
  1. S NRO=NRO+1,^UTILITY($J,ROU)=""
  1. G R1