| 1 | DMSQP5 ;SFISC/EZ-DD LISTING USING SQLI ;10/30/97  17:46 | 
|---|
| 2 | ;;22.0;VA FileMan;;Mar 30, 1999 | 
|---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | EN ; for a single file or number range, display DD information | 
|---|
| 5 | I '$O(^DMSQ("S",0)) W !?5,"Sorry, SQLI files are empty.",! Q | 
|---|
| 6 | I $$WAIT^DMSQT1 D  Q | 
|---|
| 7 | . W !?5,"Try later.  SQLI is being re-built right now." | 
|---|
| 8 | D DT^DICRW S DMQ="" D ASK G EXIT:DMQ D ASK1 G EXIT:DMQ | 
|---|
| 9 | S %ZIS="Q" D ^%ZIS G EXIT:POP | 
|---|
| 10 | I $D(IO("Q")) D  G EXIT | 
|---|
| 11 | . S ZTRTN="DQ^DMSQP5",ZTSAVE("DMFN")="",ZTSAVE("DMFN1")="" | 
|---|
| 12 | . D ^%ZTLOAD | 
|---|
| 13 | D DQ | 
|---|
| 14 | EXIT D ^%ZISC | 
|---|
| 15 | K DMFN,DMFN1,DM1,DM2,DMQ | 
|---|
| 16 | Q | 
|---|
| 17 | ASK ; select file numbers | 
|---|
| 18 | W !,"WARNING:  REPORT JUST WRITES TO THE SCREEN WITHOUT PAGE BREAKS" | 
|---|
| 19 | W !,"          (INTENDED FOR SCREEN CAPTURES) SO PICK ONE TABLE" | 
|---|
| 20 | W !,"          OR A SMALL RANGE WHEN TESTING",! | 
|---|
| 21 | S DM1=$O(^DMSQ("T","C",0)),DM2=$O(^DMSQ("T","C",99999999999),-1) | 
|---|
| 22 | S DIR(0)="NO^"_DM1_":"_DM2_":999999999",DIR("A")="Starting File Number" | 
|---|
| 23 | S DIR("?")="Enter the number of the file, e.g. 200 or 1.5215" | 
|---|
| 24 | S DIR("B")=1.521 D ^DIR S:$D(DIRUT) DMQ=1 K DIR Q:DMQ  S DMFN=Y | 
|---|
| 25 | I '$D(^DMSQ("T","C",DMFN)) W !,"SQLI table not found." G ASK | 
|---|
| 26 | Q | 
|---|
| 27 | ASK1 S DIR("B")=DMFN ; default to one file (not a range) | 
|---|
| 28 | S DIR(0)="NO^"_DM1_":"_DM2_":999999999",DIR("A")="  Ending File Number" | 
|---|
| 29 | S DIR("?")="Optionally enter a larger number for a range, e.g. 1.5217" | 
|---|
| 30 | D ^DIR S:$D(DTOUT)!$D(DUOUT) DMQ=1 K DIR Q:DMQ  S DMFN1=Y | 
|---|
| 31 | I '$D(^DMSQ("T","C",DMFN1)) D  G ASK1 | 
|---|
| 32 | . W !!?5,"There isn't a table for the file number you've entered." | 
|---|
| 33 | . W !?5,"(The highest possible number is "_DM2_".)",! | 
|---|
| 34 | I DMFN1'=DMFN,DMFN1'>DMFN D  G ASK1 | 
|---|
| 35 | . W !!?5,"Enter a LARGER number to get a range." | 
|---|
| 36 | . W !?5,"The highest possible number here is "_DM2_".",! | 
|---|
| 37 | Q | 
|---|
| 38 | DQ ; print DD information in file number order | 
|---|
| 39 | ; find file number links (from subfiles or pointers) | 
|---|
| 40 | U IO | 
|---|
| 41 | N DMQ,FI,TI,EI,CI,PEI,PI,FEI,FKI | 
|---|
| 42 | N GBL,PARLNK,LINK,PTRLNK,FLD,FLDGBL,ID,PIECE,EXTRACT,FN,DMSQTMP,TN,EN | 
|---|
| 43 | S DMQ="",FI=$O(^DMSQ("T","C",DMFN),-1) | 
|---|
| 44 | F  S FI=$O(^DMSQ("T","C",FI)) Q:(DMQ)!(FI>DMFN1)!(FI'>0)  D | 
|---|
| 45 | . S TI=0 F  S TI=$O(^DMSQ("T","C",FI,TI)) Q:(DMQ)!(TI'>0)  D | 
|---|
| 46 | .. S TN=$P(^DMSQ("T",TI,0),U,1) | 
|---|
| 47 | .. S (EI,GBL,PARLNK)="" | 
|---|
| 48 | .. F  S EI=$O(^DMSQ("E","F",TI,"C",EI)) Q:(DMQ)!(EI'>0)  D | 
|---|
| 49 | ... D PAGE I $D(DIRUT) S DMQ=1 Q | 
|---|
| 50 | ... D RPT | 
|---|
| 51 | Q | 
|---|
| 52 | PAGE ; do page breaks if using a terminal (C-) device | 
|---|
| 53 | I ($Y+6>IOSL)&(IOST["C-") S DIR(0)="E" D ^DIR K DIR W @IOF | 
|---|
| 54 | Q | 
|---|
| 55 | RPT ; | 
|---|
| 56 | I $P(^DMSQ("E",EI,0),U,2)=14 Q   ;exclude wp fields here | 
|---|
| 57 | ;include the subfiles created from wp fields later on | 
|---|
| 58 | S EN=$P(^DMSQ("E",EI,0),U,1) | 
|---|
| 59 | S (LINK,PTRLNK,FLD,FLDGBL,ID)="" | 
|---|
| 60 | S CI=$O(^DMSQ("C","B",EI,"")) | 
|---|
| 61 | S PEI=$O(^DMSQ("E","F",TI,"P","")) | 
|---|
| 62 | S PI="" F  S PI=$O(^DMSQ("P","B",PEI,PI)) Q:PI'>0  D | 
|---|
| 63 | . I CI=$P(^DMSQ("P",PI,0),U,2) D | 
|---|
| 64 | .. S GBL=GBL_^DMSQ("C",CI,1)_"{K}",ID=1 | 
|---|
| 65 | S FEI=0 F  S FEI=$O(^DMSQ("E","F",TI,"F",FEI)) Q:FEI'>0  D | 
|---|
| 66 | . S FKI=$O(^DMSQ("F","B",FEI,"")) | 
|---|
| 67 | . I FKI,CI=$P(^DMSQ("F",FKI,0),U,3) D | 
|---|
| 68 | .. S LINK=$P(^DMSQ("T",$P(^DMSQ("DM",$P(^DMSQ("E",FEI,0),U,2),0),U,4),0),U,7) | 
|---|
| 69 | .. S:ID PARLNK=LINK S:'ID PTRLNK=LINK | 
|---|
| 70 | Q:ID  D   ;just process non-ID columns (regular fields) | 
|---|
| 71 | . S FLD=$P(^DMSQ("C",CI,0),U,6) I $D(^DMSQ("C",CI,1)) D | 
|---|
| 72 | .. S FLDGBL=GBL_^DMSQ("C",CI,1) | 
|---|
| 73 | .. S PIECE=$P(^DMSQ("C",CI,0),U,11) | 
|---|
| 74 | .. S EXTRACT=$P(^DMSQ("C",CI,0),U,12)_","_$P(^(0),U,13) | 
|---|
| 75 | .. S:PIECE FLDGBL="$P("_FLDGBL_",U,"_PIECE_")" | 
|---|
| 76 | .. S:EXTRACT FLDGBL="$E("_FLDGBL_","_EXTRACT_")" | 
|---|
| 77 | D FIELD^DID(FI,FLD,"","LABEL;TYPE","DMSQTMP") | 
|---|
| 78 | S FN=$S($D(^DIC(FI)):$P(^(FI,0),U),1:$O(^DD(FI,0,"NM",""))) | 
|---|
| 79 | W !,FI_" "_FN,!?($L(FI)-3),"TBL:"_TN | 
|---|
| 80 | W !?10,FLD_" "_$G(DMSQTMP("LABEL")),!?($L(FLD)+7),"COL:"_EN | 
|---|
| 81 | W !?20,$G(DMSQTMP("TYPE")) | 
|---|
| 82 | W:PTRLNK ?32,"TO: "_PTRLNK | 
|---|
| 83 | W:PARLNK ?52,"SUBFILE OF: "_PARLNK | 
|---|
| 84 | W !?20,FLDGBL | 
|---|
| 85 | Q | 
|---|