| 1 | SPNAHOCV ;HISC/DAD-AD HOC REPORTS: MACRO EXPORT COMPILER ; [ 06/15/95  8:23 PM ]
 | 
|---|
| 2 |  ;;2.0;Spinal Cord Dysfunction;;01/02/1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | BUILD ; *** Move macro data into routine
 | 
|---|
| 5 |  W !!,"Building the Ad Hoc macro export routine(s)...",!
 | 
|---|
| 6 |  S SPNMACRO="",SPNLN=1000,(SPNDONE,SPNLEN,SPNRTNNO,SPNTAB)=0
 | 
|---|
| 7 |  K ^TMP($J,"SPNROU") D SAVE("PROG1")
 | 
|---|
| 8 |  F  S SPNMACRO=$O(^TMP($J,"SPNMACRO",SPNMACRO)) Q:SPNMACRO=""  D
 | 
|---|
| 9 |  . S SPND0=0
 | 
|---|
| 10 |  . F  S SPND0=$O(^TMP($J,"SPNMACRO",SPNMACRO,SPND0)) Q:SPND0'>0  D
 | 
|---|
| 11 |  .. S X=$G(^SPNL(154.8,SPND0,0)),SPNTYPE=$P(X,U,2) Q:X=""  D BLD(X)
 | 
|---|
| 12 |  .. S SPND1=0
 | 
|---|
| 13 |  .. F  S SPND1=$O(^SPNL(154.8,SPND0,"FLD",SPND1)) Q:SPND1'>0  D
 | 
|---|
| 14 |  ... S X=$G(^SPNL(154.8,SPND0,"FLD",SPND1,0)) Q:X=""  D BLD(X)
 | 
|---|
| 15 |  ... I SPNTYPE="s" D
 | 
|---|
| 16 |  .... S X=$G(^SPNL(154.8,SPND0,"FLD",SPND1,"FRTO")) S:X="" X=U D BLD(X)
 | 
|---|
| 17 |  .... Q
 | 
|---|
| 18 |  ... Q
 | 
|---|
| 19 |  .. D BLD("")
 | 
|---|
| 20 |  .. S SPNDONE=$O(^TMP($J,"SPNMACRO",SPNMACRO))=""
 | 
|---|
| 21 |  .. S SPNDONE=$O(^TMP($J,"SPNMACRO",SPNMACRO,SPND0))'>0&SPNDONE
 | 
|---|
| 22 |  .. I SPNLEN'<4000!SPNDONE D SAVE("PROG2")
 | 
|---|
| 23 |  .. Q
 | 
|---|
| 24 |  . Q
 | 
|---|
| 25 |  W !!,"Enter 'DO ^",SPNPROG,"' to install the exported Ad Hoc macros."
 | 
|---|
| 26 |  Q
 | 
|---|
| 27 | SAVE(PROG) ; *** Save routine
 | 
|---|
| 28 |  S SPNRTN=$S(SPNRTNNO=0:SPNPROG,1:$E(SPNPROG,1,8-$L(SPNRTNNO))_SPNRTNNO)
 | 
|---|
| 29 |  S SPNRTNXT=$S(SPNDONE:"",1:$E(SPNPROG,1,8-$L(SPNRTNNO+1))_(SPNRTNNO+1))
 | 
|---|
| 30 |  F SP=1:1 S X=$P($T(@PROG+SP),";;",2,99) Q:X=""  D
 | 
|---|
| 31 |  . X "S Y="_X S ^TMP($J,"SPNROU",SP,0)=Y
 | 
|---|
| 32 |  . Q
 | 
|---|
| 33 |  S DIE="^TMP($J,""SPNROU"",",XCN=0,X=SPNRTN X ^%ZOSF("SAVE")
 | 
|---|
| 34 |  K ^TMP($J,"SPNROU") S SPNLEN=0,SPNRTNNO=SPNRTNNO+1
 | 
|---|
| 35 |  W:SPNTAB=0 ! W ?SPNTAB,SPNRTN S SPNTAB=SPNTAB+$S(SPNTAB=70:-70,1:10)
 | 
|---|
| 36 |  Q
 | 
|---|
| 37 | BLD(X) ; *** Build data line
 | 
|---|
| 38 |  S X=" ;;"_X,SPNLEN=SPNLEN+$L(X)+2
 | 
|---|
| 39 |  S ^TMP($J,"SPNROU",SPNLN,0)=X,SPNLN=SPNLN+1
 | 
|---|
| 40 |  Q
 | 
|---|
| 41 | ID(D0) ; *** Macro identifiers
 | 
|---|
| 42 |  W "    ",$$GET1^DIQ(154.8,D0_",",.02)
 | 
|---|
| 43 |  W "    ",$$GET1^DIQ(154.8,D0_",",.03)
 | 
|---|
| 44 |  Q
 | 
|---|
| 45 | PROG1 ;; *** Routine that processes the Ad Hoc macros
 | 
|---|
| 46 |  ;;SPNRTN_" ;HISC/DAD-AD HOC REPORTS: EXPORTED MACROS ;"_SPNTODAY
 | 
|---|
| 47 |  ;;" ;;0.0;Package Name;;Mmm DD, YYYY"
 | 
|---|
| 48 |  ;;" ;;"_$P($T(SPNAHOCV+1),";",3,4)_";;"_$P($T(SPNAHOCV+1),";",6)
 | 
|---|
| 49 |  ;;" W !,""=== Ad Hoc Macro Installer ==="""
 | 
|---|
| 50 |  ;;" I $$VFILE^DILFD(154.8)=0 D  G EXIT"
 | 
|---|
| 51 |  ;;" . W $C(7),!!?3,""The Ad Hoc Macro file does not exist !!"""
 | 
|---|
| 52 |  ;;" . Q"
 | 
|---|
| 53 |  ;;" K DIR S DIR(0)=""YOAM"",DIR(""A"")=""Install macros? "",DIR(""B"")=""No"""
 | 
|---|
| 54 |  ;;" W ! D ^DIR W ! I Y D ^"_SPNRTNXT
 | 
|---|
| 55 |  ;;"EXIT ; *** Clean-up and quit"
 | 
|---|
| 56 |  ;;" K DA,DD,DIC,DIE,DIK,DINUM,DIR,DIRUT,DLAYGO,DO,DR,DTOUT,DUOUT,SPND0"
 | 
|---|
| 57 |  ;;" K SPNDATA,SPNDHD,SPNDIPCR,SPNCHKSM,SPNFIELD,SPNFOUND,SPNINCR,SPNMACRO"
 | 
|---|
| 58 |  ;;" K SPNMD0,SPNMD1,SPNNAME,SPNPFILE,SPNTYPE,X,Y"
 | 
|---|
| 59 |  ;;" Q"
 | 
|---|
| 60 |  ;;"PROCESS ; *** Process a macro"
 | 
|---|
| 61 |  ;;" S SPNNAME=$P(SPNDATA(0),U),SPNTYPE=$P(SPNDATA(0),U,2)"
 | 
|---|
| 62 |  ;;" S SPNPFILE=$P(SPNDATA(0),U,3),SPNCHKSM=$P(SPNDATA(0),U,4)"
 | 
|---|
| 63 |  ;;" S SPNDIPCR=$P(SPNDATA(0),U,5),SPNDHD=$P(SPNDATA(0),U,6)"
 | 
|---|
| 64 |  ;;" S (SPND0,SPNFOUND)=0"
 | 
|---|
| 65 |  ;;" F  S SPND0=$O(^SPNL(154.8,""B"",SPNNAME,SPND0)) Q:SPND0'>0!SPNFOUND  D"
 | 
|---|
| 66 |  ;;" . S SPNDATA=$G(^SPNL(154.8,SPND0,0))"
 | 
|---|
| 67 |  ;;" . I $P(SPNDATA,U,1,3)=$P(SPNDATA(0),U,1,3) S SPNFOUND=1"
 | 
|---|
| 68 |  ;;" . I SPNCHKSM=$P(SPNDATA,U,4)!'SPNFOUND Q"
 | 
|---|
| 69 |  ;;" . S SPNFOUND=0,DA=SPND0,DIK=""^SPNL(154.8,"" D ^DIK"
 | 
|---|
| 70 |  ;;" . Q"
 | 
|---|
| 71 |  ;;" I SPNFOUND W !,""Skipping Ad Hoc macro '"",SPNNAME,""', already exists."" Q"
 | 
|---|
| 72 |  ;;" W !,""Adding Ad Hoc macro '"",SPNNAME,""'."""
 | 
|---|
| 73 |  ;;" K DD,DIC,DINUM,DO S DIC=""^SPNL(154.8,"",DIC(0)=""LM"""
 | 
|---|
| 74 |  ;;" S DLAYGO=154.8,X=SPNNAME D FILE^DICN S SPNMD0=+Y"
 | 
|---|
| 75 |  ;;" I SPNMD0'>0 W !?5,""Could not add Ad Hoc macro '"",SPNNAME,""'?!"" Q"
 | 
|---|
| 76 |  ;;" S DR="".02////""_SPNTYPE_"";.03////""_SPNPFILE"
 | 
|---|
| 77 |  ;;" S DR=DR_"";.04////""_SPNCHKSM_"";.05////""_SPNDIPCR"
 | 
|---|
| 78 |  ;;" S DIE=""^SPNL(154.8,"",DA=SPNMD0 D ^DIE"
 | 
|---|
| 79 |  ;;" S $P(^SPNL(154.8,SPNMD0,0),U,6)=SPNDHD"
 | 
|---|
| 80 |  ;;" S SPNMD1=0,SPNINCR=$S(SPNTYPE=""s"":2,1:1)"
 | 
|---|
| 81 |  ;;" F SPNFIELD=1:SPNINCR S SPNDATA=$G(SPNDATA(SPNFIELD)) Q:SPNDATA=""""  D"
 | 
|---|
| 82 |  ;;" . S SPNMD1=SPNMD1+1"
 | 
|---|
| 83 |  ;;" . S ^SPNL(154.8,SPNMD0,""FLD"",SPNMD1,0)=SPNDATA"
 | 
|---|
| 84 |  ;;" . I SPNTYPE=""p"" Q"
 | 
|---|
| 85 |  ;;" . S SPNDATA=$G(SPNDATA(SPNFIELD+1))"
 | 
|---|
| 86 |  ;;" . S ^SPNL(154.8,SPNMD0,""FLD"",SPNMD1,""FRTO"")=SPNDATA"
 | 
|---|
| 87 |  ;;" . Q"
 | 
|---|
| 88 |  ;;" S SPNDATA=$$GET1^DID(154.8,1,"""",""SPECIFIER"")_U_SPNMD1_U_SPNMD1"
 | 
|---|
| 89 |  ;;" S ^SPNL(154.8,SPNMD0,""FLD"",0)=SPNDATA"
 | 
|---|
| 90 |  ;;" S DIK=""^SPNL(154.8,"",DA=SPNMD0 D IX1^DIK"
 | 
|---|
| 91 |  ;;" Q"
 | 
|---|
| 92 |  ;;
 | 
|---|
| 93 | PROG2 ;; *** Routine that contains the Ad Hoc macros
 | 
|---|
| 94 |  ;;SPNRTN_" ;HISC/DAD-AD HOC REPORTS: EXPORTED MACROS ;"_SPNTODAY
 | 
|---|
| 95 |  ;;" ;;0.0;Package Name;;Mmm DD, YYYY"
 | 
|---|
| 96 |  ;;" ;;"_$P($T(SPNAHOCV+1),";",3,4)_";;"_$P($T(SPNAHOCV+1),";",6)
 | 
|---|
| 97 |  ;;" K SPNDATA S SPNFIELD=0"
 | 
|---|
| 98 |  ;;" F SPNMACRO=1:1 S SPNDATA=$T(MACRO+SPNMACRO) Q:SPNDATA=""""  D"
 | 
|---|
| 99 |  ;;" . S SPNDATA=$P(SPNDATA,"";"",3,99)"
 | 
|---|
| 100 |  ;;" . I SPNDATA="""" D PROCESS^"_SPNPROG_" K SPNDATA S SPNFIELD=0 Q"
 | 
|---|
| 101 |  ;;" . S SPNDATA(SPNFIELD)=SPNDATA,SPNFIELD=SPNFIELD+1"
 | 
|---|
| 102 |  ;;" . Q"
 | 
|---|
| 103 |  ;;$S(SPNRTNXT]"":" G ^"_SPNRTNXT,1:" Q")
 | 
|---|
| 104 |  ;;"MACRO ;;Macro data"
 | 
|---|
| 105 |  ;;
 | 
|---|