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

XINDX8.m

Go to the documentation of this file.
  1. XINDX8 ;ISC/GRK - STRUCTURED INDEX ;01/04/2000 14:29 [ 12/18/2003 4:57 PM ]
  1. ;;7.3;TOOLKIT;**20,27,61,1002**;Apr 25, 1995
  1. S Q="""",(DDOT,LO)=0,PG=+$G(PG) D HDR
  1. F LC=1:1 Q:'$D(^UTILITY($J,1,RTN,0,LC)) S LIN=^(LC,0),ML=0,IDT=10 D CD
  1. K AGR,EOC,IDT,JJ,LO,ML,OLD,SAV,TY
  1. Q
  1. CD S LAB=$P(LIN," ",1),LIN=$P(LIN," ",2,999),LO=$S(LAB="":LO+1,1:0)
  1. W $S('LO:LAB,1:" +"_LO)_" "
  1. G:LIN'[";" EE S STR=1,L=";",ARG=LIN D LOOP I CH'=";" G EE
  1. W ?10,$E(LIN,I,999),! Q:I<2 S LIN=$E(LIN,1,I-2)
  1. EE I LIN="" Q
  1. I $E(LIN)=" " S LIN=$E(LIN,2,9999) G EE ;Skip blanks
  1. D SEP S EOC=0,COM=$$CASE^XINDX52($P(ARG,":")),CM=$P($G(IND("CMD",COM)),"^") I CM="" G ERR
  1. I ARG[":" S OLD=CM,COM="IF",ARG=$P(ARG,":",2) D GRB S IDT=IDT+4,CM=OLD,EOC=4
  1. S COM=CM D SEP
  1. S:$E(COM)="H"&(ARG'="") COM="HANG" S X=$E(COM,1)
  1. D @$S("BCHKLMNOPQRUVWZ"[X:"GRB",X="S":"SET","DGX"[X:"DGX","IE"[X:"IFE",X="F":"FOR",1:"GRB") S:EOC IDT=IDT-EOC G EE
  1. ;
  1. GRB I ARG["$" F I=1:1 S CH=$E(ARG,I) Q:CH="" D QUOTE:CH=Q I CH="$" D FUN
  1. I $Y+2>IOSL D HDR
  1. W ?IDT," ",$S(ML:"...",1:COM)," ",ARG,! S ML=0 Q
  1. FUN I " $$ $& $% "[(" "_$E(ARG,I,I+1)_" ") D S I=J-1 Q ;Handle Extrinsics
  1. . F J=I+2:1 Q:"(,"[$E(ARG,J)
  1. . Q
  1. F J=I+1:1 Q:$E(ARG,J)'?1A
  1. S X=$E(ARG,I+1,J-1),L=$L(X),CH=$E(ARG,I+1),TY=$S($E(ARG,J)="(":"FNC",1:"SVN")
  1. Q:CH="Z" S X=$P($G(IND(TY,X)),"^")
  1. G:'$L(X) ERR Q:L=$L(X)
  1. D:$L(ARG)>245 LEN S ARG=$E(ARG,1,I)_X_$E(ARG,J,999),I=I+$L(X)-L
  1. Q
  1. ERR W !,"*** ERROR ***",! Q
  1. IFE I ARG=""!(X="E") W ?IDT,"IF " W:X="E" "'" W "$TEST",! S IDT=IDT+4 Q
  1. SET S STR=1,L="," D LOOP S SAV=ARG,ARG=$E(ARG,1,I-1),IP=I+1
  1. D GRB S ARG=$E(SAV,IP,999) S:COM="IF" IDT=IDT+4 Q:ARG="" G SET
  1. FOR D GRB S IDT=IDT+4 Q
  1. DGX I ARG="",$E(COM)="D" D DDOT Q
  1. S STR=1,L=":," D LOOP I CH="" G GRB
  1. I CH="," S SAV=ARG,ARG=$E(ARG,1,I-1),IP=I+1 D GRB G D1
  1. S SAV=ARG,STR=I+1,L="," D LOOP S IP=I+1
  1. S OLD=COM,ARG=$E(ARG,STR,I-1),COM="IF" D GRB
  1. S IDT=IDT+4,ARG=$E(SAV,1,STR-2),COM=OLD D GRB S IDT=IDT-4
  1. D1 S ARG=$E(SAV,IP,999) Q:ARG="" G DGX
  1. DDOT S DDOT=DDOT+1 W ?IDT," Begin DoDot:",DDOT,! S IDT(DDOT)=IDT+4
  1. N LIN,I,COM,EOC,Y
  1. F LC=LC+1:1 S LIN=$G(^UTILITY($J,1,RTN,0,LC,0)),IDT=IDT(DDOT) Q:LIN="" D Q:X<DDOT D CD
  1. . S Y=$P(LIN," "),LIN=$P(LIN," ",2,999)
  1. . F I=1:1:254 Q:". "'[$E(LIN,I)
  1. . S X=$L($E(LIN,1,I),".")-1,LIN=Y_" "_$E(LIN,I,999)
  1. S IDT=IDT-4,LC=LC-1 W ?IDT," End DoDot:",DDOT,! S DDOT=DDOT-1
  1. Q
  1. LOOP F I=STR:1 S CH=$E(ARG,I) D QUOTE:CH=Q,PAREN:CH="(" Q:L[CH
  1. Q
  1. PAREN S PC=1
  1. F I=I+1:1 S CH=$E(ARG,I) Q:PC=0!(CH="") I "()"""[CH D QUOTE:CH=Q S:"()"[CH PC=PC+$S(CH="(":1,1:-1)
  1. Q
  1. QUOTE F I=I+1:1 S CH=$E(ARG,I) Q:CH=""!(CH=Q)
  1. Q
  1. SEP F I=1:1 S CH=$E(LIN,I) D SEPQ:CH=Q Q:"; "[CH
  1. S ARG=$E(LIN,1,I-1) S:CH=" " I=I+1 S LIN=$E(LIN,I,999) Q
  1. SEPQ S I=I+1,CH=$E(LIN,I) I CH="" G ERR Q
  1. G SEPQ:CH'=Q S I=I+1,CH=$E(LIN,I) G:CH=Q SEPQ Q
  1. LEN S AGR=$E(ARG,1,I-1) W ?IDT,COM," ",AGR_"...",! S ARG=$E(ARG,I)_$E(ARG,J-1,999),I=1,J=3,ML=1 K AGR
  1. Q
  1. HDR S PG=PG+1
  1. W @IOF,RTN," ",+^UTILITY($J,1,RTN,0)," printed ",INDXDT,?(IOM-10)," Page ",PG,!!
  1. Q
  1. ;
  1. UC(%) Q $TR(%,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
  1. ;
  1. XCR ;Option entry point
  1. K ^UTILITY($J) D ASKRTN^XINDX6 G EXIT:NRO<1 S %ZIS="M" D ^%ZIS Q:POP U IO(0)
  1. I $D(IO("Q")) S ZTRTN="XC2^XINDX8",ZTSAVE("^UTILITY($J,")="",ZTDESC="Structured print" D ^%ZTLOAD G EXIT
  1. XC2 U IO I '$D(INDXDT) D NOW^%DTC S INDXDT=$E(%,2,3)_"/"_$E(%,4,5)_"/"_$E(%,6,7)
  1. D BUILD^XINDX7
  1. S RTN="" F S RTN=$O(^UTILITY($J,RTN)) Q:RTN="" D D XINDX8
  1. . D LOAD^XINDEX
  1. . S CCN=0 F I=1:1:+^UTILITY($J,1,RTN,0,0) S CCN=CCN+$L(^UTILITY($J,1,RTN,0,I,0))+2
  1. . S ^UTILITY($J,1,RTN,0)=CCN
  1. . Q
  1. EXIT D ^%ZISC K ^UTILITY($J),RTN,T,CCN,I,PG,INDXDT