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

DMSQP5.m

Go to the documentation of this file.
  1. DMSQP5 ;SFISC/EZ-DD LISTING USING SQLI ;10/30/97 17:46
  1. ;;22.2;VA FileMan;;Jan 05, 2016;Build 42
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;;Submitted to OSEHRA 5 January 2015 by the VISTA Expertise Network.
  1. ;;Based on Medsphere Systems Corporation's MSC FileMan 1051.
  1. ;;Licensed under the terms of the Apache License, Version 2.0.
  1. ;
  1. EN ; for a single file or number range, display DD information
  1. I '$O(^DMSQ("S",0)) W !?5,"Sorry, SQLI files are empty.",! Q
  1. I $$WAIT^DMSQT1 D Q
  1. . W !?5,"Try later. SQLI is being re-built right now."
  1. D DT^DICRW S DMQ="" D ASK G EXIT:DMQ D ASK1 G EXIT:DMQ
  1. S %ZIS="Q" D ^%ZIS G EXIT:POP
  1. I $D(IO("Q")) D G EXIT
  1. . S ZTRTN="DQ^DMSQP5",ZTSAVE("DMFN")="",ZTSAVE("DMFN1")=""
  1. . D ^%ZTLOAD
  1. D DQ
  1. EXIT D ^%ZISC
  1. K DMFN,DMFN1,DM1,DM2,DMQ
  1. Q
  1. ASK ; select file numbers
  1. W !,"WARNING: REPORT JUST WRITES TO THE SCREEN WITHOUT PAGE BREAKS"
  1. W !," (INTENDED FOR SCREEN CAPTURES) SO PICK ONE TABLE"
  1. W !," OR A SMALL RANGE WHEN TESTING",!
  1. S DM1=$O(^DMSQ("T","C",0)),DM2=$O(^DMSQ("T","C",99999999999),-1)
  1. S DIR(0)="NO^"_DM1_":"_DM2_":999999999",DIR("A")="Starting File Number"
  1. S DIR("?")="Enter the number of the file, e.g. 200 or 1.5215"
  1. S DIR("B")=1.521 D ^DIR S:$D(DIRUT) DMQ=1 K DIR Q:DMQ S DMFN=Y
  1. I '$D(^DMSQ("T","C",DMFN)) W !,"SQLI table not found." G ASK
  1. Q
  1. ASK1 S DIR("B")=DMFN ; default to one file (not a range)
  1. S DIR(0)="NO^"_DM1_":"_DM2_":999999999",DIR("A")=" Ending File Number"
  1. S DIR("?")="Optionally enter a larger number for a range, e.g. 1.5217"
  1. D ^DIR S:$D(DTOUT)!$D(DUOUT) DMQ=1 K DIR Q:DMQ S DMFN1=Y
  1. I '$D(^DMSQ("T","C",DMFN1)) D G ASK1
  1. . W !!?5,"There isn't a table for the file number you've entered."
  1. . W !?5,"(The highest possible number is "_DM2_".)",!
  1. I DMFN1'=DMFN,DMFN1'>DMFN D G ASK1
  1. . W !!?5,"Enter a LARGER number to get a range."
  1. . W !?5,"The highest possible number here is "_DM2_".",!
  1. Q
  1. DQ ; print DD information in file number order
  1. ; find file number links (from subfiles or pointers)
  1. U IO
  1. N DMQ,FI,TI,EI,CI,PEI,PI,FEI,FKI
  1. N GBL,PARLNK,LINK,PTRLNK,FLD,FLDGBL,ID,PIECE,EXTRACT,FN,DMSQTMP,TN,EN
  1. S DMQ="",FI=$O(^DMSQ("T","C",DMFN),-1)
  1. F S FI=$O(^DMSQ("T","C",FI)) Q:(DMQ)!(FI>DMFN1)!(FI'>0) D
  1. . S TI=0 F S TI=$O(^DMSQ("T","C",FI,TI)) Q:(DMQ)!(TI'>0) D
  1. .. S TN=$P(^DMSQ("T",TI,0),U,1)
  1. .. S (EI,GBL,PARLNK)=""
  1. .. F S EI=$O(^DMSQ("E","F",TI,"C",EI)) Q:(DMQ)!(EI'>0) D
  1. ... D PAGE I $D(DIRUT) S DMQ=1 Q
  1. ... D RPT
  1. Q
  1. PAGE ; do page breaks if using a terminal (C-) device
  1. I ($Y+6>IOSL)&(IOST["C-") S DIR(0)="E" D ^DIR K DIR W @IOF
  1. Q
  1. RPT ;
  1. I $P(^DMSQ("E",EI,0),U,2)=14 Q ;exclude wp fields here
  1. ;include the subfiles created from wp fields later on
  1. S EN=$P(^DMSQ("E",EI,0),U,1)
  1. S (LINK,PTRLNK,FLD,FLDGBL,ID)=""
  1. S CI=$O(^DMSQ("C","B",EI,""))
  1. S PEI=$O(^DMSQ("E","F",TI,"P",""))
  1. S PI="" F S PI=$O(^DMSQ("P","B",PEI,PI)) Q:PI'>0 D
  1. . I CI=$P(^DMSQ("P",PI,0),U,2) D
  1. .. S GBL=GBL_^DMSQ("C",CI,1)_"{K}",ID=1
  1. S FEI=0 F S FEI=$O(^DMSQ("E","F",TI,"F",FEI)) Q:FEI'>0 D
  1. . S FKI=$O(^DMSQ("F","B",FEI,""))
  1. . I FKI,CI=$P(^DMSQ("F",FKI,0),U,3) D
  1. .. S LINK=$P(^DMSQ("T",$P(^DMSQ("DM",$P(^DMSQ("E",FEI,0),U,2),0),U,4),0),U,7)
  1. .. S:ID PARLNK=LINK S:'ID PTRLNK=LINK
  1. Q:ID D ;just process non-ID columns (regular fields)
  1. . S FLD=$P(^DMSQ("C",CI,0),U,6) I $D(^DMSQ("C",CI,1)) D
  1. .. S FLDGBL=GBL_^DMSQ("C",CI,1)
  1. .. S PIECE=$P(^DMSQ("C",CI,0),U,11)
  1. .. S EXTRACT=$P(^DMSQ("C",CI,0),U,12)_","_$P(^(0),U,13)
  1. .. S:PIECE FLDGBL="$P("_FLDGBL_",U,"_PIECE_")"
  1. .. S:EXTRACT FLDGBL="$E("_FLDGBL_","_EXTRACT_")"
  1. D FIELD^DID(FI,FLD,"","LABEL;TYPE","DMSQTMP")
  1. S FN=$S($D(^DIC(FI)):$P(^(FI,0),U),1:$O(^DD(FI,0,"NM","")))
  1. W !,FI_" "_FN,!?($L(FI)-3),"TBL:"_TN
  1. W !?10,FLD_" "_$G(DMSQTMP("LABEL")),!?($L(FLD)+7),"COL:"_EN
  1. W !?20,$G(DMSQTMP("TYPE"))
  1. W:PTRLNK ?32,"TO: "_PTRLNK
  1. W:PARLNK ?52,"SUBFILE OF: "_PARLNK
  1. W !?20,FLDGBL
  1. Q