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

INHSZ.m

Go to the documentation of this file.
  1. INHSZ ;JSH; 15 Oct 1999 15:41 ;Interface Script compiler
  1. ;;3.01;BHL IHS Interfaces with GIS;;JUL 01, 2001
  1. ;COPYRIGHT 1991-2000 SAIC
  1. ;CHCS TOOLS_460; GEN 6; 8-APR-1997
  1. ;COPYRIGHT 1988, 1989, 1990 SAIC
  1. ;
  1. I $G(^DD("OS",^DD("OS"),"ZS"))="" W *7,!,"Your operating system does not allow saving a routine.",!! Q
  1. N SCR,DIC,Y,STR
  1. S DIC="^INRHS(",DIC(0)="QAE",DIC("A")="Select SCRIPT to Compile: ",DIC("S")="I '$P(^(0),U,4)" D ^DIC Q:Y<0 S SCR=+Y
  1. EN ;Enter here with SCR = script # to compile
  1. Q:'$D(^INRHS(SCR))
  1. L +^INRHS(SCR):0 E W !,*7,"Another user is working with this script." Q
  1. N INDUZ M INDUZ=DUZ N DUZ S DUZ(0)="@",DUZ("AG")=$G(INDUZ("AG"))
  1. N DOT,INDL,MAX,INDS,INDE,ROU,INSTD,STR
  1. ;S MAX=+$G(^DD("ROU")) S:'MAX MAX=6000 S MAX=MAX-500 cmi/maw orig
  1. S MAX=+$G(^DD("ROU")) S:'MAX MAX=10000 S MAX=MAX-500 ;cmi/maw mod
  1. S DT=$$DT^UTDT
  1. ;Set flag for interface standard (stored in field .07)
  1. S INSTD=$P(^INRHS(SCR,0),U,7),INSTD=$S(INSTD="NCPDP":"NC",INSTD="X12":"X12",INSTD="HL7":"HL",1:"HL")
  1. W !!,"Compiling Script: ",$P(^INRHS(SCR,0),U),!
  1. S ROU="IS"_$E(SCR#100000+100000,2,6) K ^UTILITY("IN",$J)
  1. I $$^INHSZ1(SCR) D
  1. .D FILE
  1. E D:$G(^UTILITY("INHSYS_FILERR",$J)) SUMERR^INHSYS11($P(^INRHS(SCR,0),U)_" not compiled.")
  1. L -^INRHS(SCR)
  1. Q
  1. ;
  1. ASBL(SCR) ;Assemble script lines SCR = script #
  1. S L="",V="^UTILITY(""IN"",$J,""L"")",(C0,C1,C,LVL)=0
  1. S I=0 F S I=$O(^INRHS(SCR,1,I)) Q:'I S X=^(I,0) S:'$O(^INRHS(SCR,1,I)) X=X_"|CR|" D
  1. . I X'["|CR|" D Q
  1. .. I $L(L)+$L(X)'>255 S L=L_X Q
  1. .. F Q:X="" D
  1. ... S Z=255-$L(L),L=L_$E(X,1,Z),X=$E(X,Z+1,999) Q:$L(L)'=255
  1. ... S C=C+1,@V@(C)=L,L="" D:'LVL DOWN Q
  1. .; X now contains a |CR|
  1. . F Q:X'["|CR|" D
  1. .. S L1=$P(X,"|CR|"),X=$P(X,"|CR|",2,999)
  1. .. I $L(L1)+$L(L)<256 S C=C+1,@V@(C)=L_L1 D:LVL UP S L="" Q
  1. .. S Z=255-$L(L),L=L_$E(L1,1,Z),L1=$E(L1,Z+1,999),C=C+1,@V@(C)=L D:'LVL DOWN S C=C+1,@V@(C)=L1,L="" D UP Q
  1. Q
  1. ;
  1. DOWN ;Move down 1 level
  1. S C0=C,V="^UTILITY(""IN"",$J,""L"","_C0_")",C=0,LVL=1 Q
  1. ;
  1. UP ;Move up to top level
  1. S V="^UTILITY(""IN"",$J,""L"")",C=C0,LVL=0 Q
  1. ;
  1. FILE ;File the routine(s) created
  1. W !,"Linking... "
  1. N C,RN,LC,LVL,DOT,CS,MODE,STRIP,INZS,%REF,DATE,RMAX
  1. S MODE=$E($P(^INRHS(SCR,0),U,2))
  1. S C=0,RN=1,(LC,LVL,STRIP)=0,Y=DT D DD^%DT S DATE=Y K DOT
  1. F D Q:'$O(^UTILITY("IN",$J,"R",C))
  1. . ;S (A,CS)=0,L=1 S X=ROU_$S(RN=1:"",1:$C(RN+63)) K ^UTILITY("IN",$J,RN) maw orig line
  1. . S (A,CS)=0,L=1 S X=ROU_$S(RN=1:"",RN>27:$C(RN+69),1:$C(RN+63)) K ^UTILITY("IN",$J,RN) ;cmi/sitka/maw modified for more routines
  1. . I RN=1 D
  1. .. I MODE="O" S X=X_"(INTT,INDA,INA,INDEST,INQUE,INORDUZ,INORDIV)"
  1. .. E S X=X_"(UIF,INOA,INODA)"
  1. .. S X=X_" ;Compiled from script '"_$P(^INRHS(SCR,0),U)_"' on "_DATE,^UTILITY("IN",$J,RN,L)=X,CS=CS+X
  1. . E S ^UTILITY("IN",$J,RN,L)=X_" ;Compiled from script '"_$P(^INRHS(SCR,0),U)_"' on "_DATE,CS=CS+$L(^UTILITY("IN",$J,RN,L))+2
  1. . S L=L+1,^UTILITY("IN",$J,RN,L)=" ;Part "_RN,CS=CS+$L(^(L))+2
  1. . S L=L+1,^UTILITY("IN",$J,RN,L)=" ;Copyright "_$$DATEFMT^UTDT(DT,"YYYY")_" SAIC",CS=CS+$L(^UTILITY("IN",$J,RN,L))+2 I $P(^UTILITY("IN",$J,"R",C+1)," ")="" S $P(^(C+1)," ")="EN",STRIP=$$NUMDOTS(^(C+1))
  1. . F S C=C+1 Q:'$D(^UTILITY("IN",$J,"R",C)) Q:CS+$L($G(^UTILITY("IN",$J,"R",C)))+13>MAX&'A D
  1. .. S A=0
  1. .. S L=L+1,^UTILITY("IN",$J,RN,L)=$$STRIP(^UTILITY("IN",$J,"R",C),STRIP),CS=CS+$L(^UTILITY("IN",$J,RN,L))+2
  1. .. I $D(INDL(C)) S $P(INDL(C),U,2)=RN_U_(LVL-STRIP) S LVL=LVL+1
  1. .. I $D(INDE(C)) S LVL0=$P(INDL(+INDE(C)),U,3),SR=$P(INDL(+INDE(C)),U,2) S:SR'=RN TAG=$$TAG(LC)_LVL,$P(INDE(C),U,2)=TAG,DOT(SR,999-LVL0)=LVL0_U_RN_U_TAG S LVL=LVL-1,A=1 S:'LVL LC=LC+1 D:SR'=RN
  1. ... S $P(^UTILITY("IN",$J,"R",C+1)," ")=TAG,STRIP=$$NUMDOTS(^(C+1))
  1. . S C=C-1
  1. . I $O(^UTILITY("IN",$J,"R",C)),'$D(INDE(C+1)) D
  1. .. ;S L=L+1,^UTILITY("IN",$J,RN,L)="9 "_$E("...............",1,LVL-STRIP)_$S(LVL-STRIP:"D",1:"G")_" EN^"_ROU_$C(RN+64) maw orig
  1. .. S L=L+1,^UTILITY("IN",$J,RN,L)="9 "_$E("...............",1,LVL-STRIP)_$S(LVL-STRIP:"D",1:"G")_" EN^"_ROU_$S(RN>26:$C(RN+70),1:$C(RN+64)) ;maw mod for more routines
  1. . S ^UTILITY("IN",$J,RN)=L,RN=RN+1
  1. F1 ;Do the filing
  1. W " Filing generated routines...",!
  1. S INZS=$$REPLACE^UTIL(^DD("OS",^DD("OS"),"ZS"),"^UTILITY($J,0,","@%REF@("),I=0 F S I=$O(^UTILITY("IN",$J,I)) Q:'I S RMAX=I D
  1. . S %REF="^UTILITY(""IN"",$J,"_I_")"
  1. . ;S X=ROU_$S(I=1:"",1:$C(I+63)) maw orig
  1. . S X=ROU_$S(I=1:"",I>27:$C(I+69),1:$C(I+63)) ;maw modified
  1. . I $D(DOT(I)) D
  1. .. S L=^UTILITY("IN",$J,I)
  1. .. ;S J=0 F S J=$O(DOT(I,J)) Q:'J S LVL=999-J,L=L+1,@%REF@(L)=" "_$E("...............",1,LVL)_$S(LVL:"D",1:"G")_" "_$P(DOT(I,J),U,3)_"^"_ROU_$C(63+$P(DOT(I,J),U,2)) ;maw orig
  1. .. S J=0 F S J=$O(DOT(I,J)) Q:'J S LVL=999-J,L=L+1,@%REF@(L)=" "_$E("...............",1,LVL)_$S(LVL:"D",1:"G")_" "_$P(DOT(I,J),U,3)_"^"_ROU_$S($P(DOT(I,J),U,2)>27:$C(69+$P(DOT(I,J),U,2)),1:$C(63+$P(DOT(I,J),U,2))) ;maw modified
  1. . X INZS W !,"Routine ",X,?19,"...Filed"
  1. S $P(^INRHS(SCR,0),U,6)=RMAX K ^UTILITY("IN",$J),^UTILITY($J)
  1. Q
  1. ;
  1. TAG(X) ;Return tag for #X
  1. I X<52 Q $C($S(X<26:65,1:71)+X)
  1. Q $C(64+(X\52))_$C($S((X#52)<26:65,1:71)+(X#52))
  1. ;
  1. RECOMP ;Recompile all scripts
  1. F SCR=0:0 S SCR=$O(^INRHS(SCR)) Q:'SCR D EN:'$P(^(SCR,0),U,4)
  1. Q
  1. ;
  1. NUMDOTS(%L) ;Returns number of dots at start of %L
  1. N X S %L=$P(%L," ",2,999),X=1
  1. NM0 Q:$E(%L,X)'="." X-1 S X=X+1 G NM0
  1. ;
  1. STRIP(%L,%N) ;Strip %N dots from front of %L
  1. Q:'%N %L
  1. Q $P(%L," ")_" "_$P($P(%L," ",2,999),$E("..............",1,%N),2,999)