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

AMQQCMP3.m

Go to the documentation of this file.
  1. AMQQCMP3 ; IHS/CMI/THL - SUBQUERY ANALYTIC STACK COMPILER ;
  1. ;;2.0;IHS PCC SUITE;;MAY 14, 2009
  1. ;-----
  1. VAR S (AMQQAFNO,AMQQAFNN)=0
  1. S AMQQSQLV=1
  1. K AMQQRED
  1. RUN S AMQQAFNO=$O(^UTILITY("AMQQ",$J,"SQ",AMQQUSQN,AMQQAFNO))
  1. I 'AMQQAFNO D:AMQQUSQN SET G EXIT
  1. S AMQQSQ1=AMQQUSQN
  1. S AMQQSQFN=AMQQAFNO
  1. D FSET
  1. S AMQQSQLV=AMQQSQLV+1
  1. D RUN1
  1. G RUN
  1. EXIT K AMQQAFNO,AMQQSQLV,%,A,Q
  1. Q
  1. ;
  1. FSET S AMQQAFNN=AMQQAFNN+1
  1. S A=^UTILITY("AMQQ",$J,"SQ",AMQQSQ1,AMQQSQFN)
  1. S %=$P(A,U,3)
  1. S %=$P(^AMQQ(4,%,0),U)
  1. I %'="","ZQT"[% S X=$P(A,U,7) D @("NN"_%) S $P(A,U,7)=X G FS1
  1. I $D(^AMQQ(1,+A,6)) S X=$P(A,U,7) X ^(6) S $P(A,U,7)=X ; INPUT TRANSFORM
  1. FS1 ; CHECK FOR TERMINATOR FUNCTIONS LIKE NULL
  1. I '$O(^UTILITY("AMQQ",$J,"SQ",AMQQSQ1,AMQQSQFN)) S AMQV("SQ",AMQQSQ1,AMQQAFNN+1)="Q"
  1. I "MVL"'[$P(A,U,6) S Z=$P(A,U,7) G VSET
  1. S %=+^UTILITY("AMQQ",$J,"QQ",$P(A,U,7))
  1. I $P(^AMQQ(1,%,0),";")="VISIT" S %=1 G FS11
  1. I $P(^AMQQ(1,%,0),";")="PROVIDER" S %=5 G FS11
  1. S %=^AMQQ(1,%,2)
  1. S %=+$P(%,"AMQP(",2)
  1. FS11 S Z=$P(A,U,7)
  1. I $P(A,U,6)'="M" S Z=Z_";"_%_";"_$S($P(A,U,6)="V":3,1:4)
  1. VSET S %="S "
  1. I $P(A,U,8) S %="S AMQQNOT="""","
  1. S %=%_"AMQQCOMP="""_Z_""" D "_$P(A,U,4,5)_" S AMQT(""SQ"","_AMQQSQ1_","_AMQQAFNN_")=$D(^UTILITY(""AMQQ"",$J,""AG"","
  1. S %=%_$S('AMQQUSQN:"AMQQUATN",1:AMQQUATN)_")) X:AMQT(""SQ"","_AMQQSQ1_","_AMQQAFNN_") AMQV(""SQ"","_AMQQSQ1_","_(AMQQAFNN+1)_")"
  1. S AMQV("SQ",AMQQSQ1,AMQQAFNN)=%
  1. I "CO"[$P(A,U,6),'$D(AMQQRED),AMQQSQLV=1 D RED
  1. Q
  1. ;
  1. SET N X,Y,Z,% S %=AMQV(AMQQLINO)
  1. S X=$P(%,"AMQQX=")
  1. S Y=$P(%,"AMQQX=",2)
  1. S Z=$P(Y,""" D ^AMQQ",2)
  1. S Y=$P(Y,""" D ^AMQQ")
  1. S $P(Y,";",19)=AMQQUSQN
  1. S AMQV(AMQQLINO)=X_"AMQQX="_Y_""" D ^AMQQ"_Z
  1. NULL I $D(^UTILITY("AMQQ",$J,"SQ",AMQQUSQN,"NULL")) S AMQV("SQ",AMQQUSQN,"NULL")=""
  1. Q
  1. ;
  1. RED I $P(A,U,6)="O",$P(A,U,7)>1 Q
  1. S %=$P(^AMQQ(5,+A,0),U,11)
  1. S AMQQRED=%_$S(%="TOT #":"\",1:" ")_$P(^AMQQ(1,+Q,4,1,0),U,4)_$S(%="TOT #":"S",1:"")
  1. S Y=$P(AMQQRED,"\")
  1. S Z=$P(AMQQRED,"\",2)
  1. S %=$S($L(Y)>$L(Z):$L(Y),1:$L(Z))
  1. S Y=$P(^AMQQ(1,+Q,4,1,0),U,6)
  1. S:(%>Y) Y=%
  1. S AMQQRED=AMQQRED_U_Y
  1. I $P(A,U,6)="C" S $P(AMQQRED,U,3)=1,$P(AMQV(AMQQLINO),";",11)=1
  1. Q
  1. ;
  1. NNZ I X'[";" S X=$S($E(X)="N":0,$E(X)="T":1,1:(+X+1)) Q
  1. N A,%
  1. S %=$P(X,";")
  1. D NNZ1
  1. S A=%,%=$P(X,";",2)
  1. D NNZ1
  1. S X=A_";"_%
  1. Q
  1. NNZ1 S %=$S($E(%)="N":0,$E(%)="T":1,1:(+%+1))
  1. Q
  1. ;
  1. ;
  1. NNQ S X='($E(X)="N")
  1. Q
  1. ;
  1. RUN1 S X=AMQQSQ1
  1. START N AMQQSQ1,AMQQSQ2,AMQQAFNN,AMQQSQFN
  1. S AMQQSQ1=X
  1. S (AMQQSQ2,AMQQAFNN)=0
  1. INC S AMQQSQ2=$O(^UTILITY("AMQQ",$J,"SQXS",AMQQSQ1,AMQQSQ2))
  1. I 'AMQQSQ2 S AMQQSQLV=AMQQSQLV-1 N AMQQUSQN S AMQQUSQN=AMQQSQ1 D NULL Q
  1. I $D(^UTILITY("AMQQ",$J,"SQXS",AMQQSQ2)) S AMQQSQLV=AMQQSQLV+1,X=AMQQSQ2 D START
  1. S AMQQSQFN=0
  1. INC1 S AMQQSQFN=$O(^UTILITY("AMQQ",$J,"SQ",AMQQSQ2,AMQQSQFN))
  1. I 'AMQQSQFN G INC
  1. S AMQQSQ1=AMQQSQ2
  1. D FSET
  1. G INC1
  1. ;
  1. EN1 ; ENTRY POINT FROM AMQQCMP2 FOR GENERIC VISIT CONDITIONS
  1. N AMQQUSQN S AMQQUSQN=0
  1. D VAR
  1. Q
  1. ;