1 | MCDUPR ;WASH/DCB-Reporting of the duplicates ;5/16/96 15:39
|
---|
2 | ;;2.3;Medicine;;09/13/1996
|
---|
3 | START ;
|
---|
4 | N POP,%ZIS,ZTSAVE,ZTRTN,ZTDESC,ZTSK
|
---|
5 | W @IOF
|
---|
6 | K IO("Q") S %ZIS="MQ",%ZIS("B")="Q",%ZIS("A")="This report should be captured on a printer for documentation purposes!! " D ^%ZIS I POP Q
|
---|
7 | I $D(IO("Q")) D Q
|
---|
8 | . S ZTRTN="MAIN^MCDUPR"
|
---|
9 | . S ZTSAVE("^TMP($J,""DUP"",")=""
|
---|
10 | . S ZTDESC="Removal of Duplication for Medicine"
|
---|
11 | . D ^%ZTLOAD K ZTSK
|
---|
12 | . Q
|
---|
13 | D MAIN
|
---|
14 | Q
|
---|
15 | MAIN ;
|
---|
16 | U IO
|
---|
17 | I $E(IOST,1,2)="C-" W @IOF
|
---|
18 | I $D(^TMP($J,"DUP")) D RPT1,RPT2,^%ZISC
|
---|
19 | Q
|
---|
20 | RPT1 ;Duplicate Static File Entries
|
---|
21 | N PGE,CNT,MCNT S (CNT,MCNT)=0 D RPT1H,RPT1M,RPT1F Q
|
---|
22 | RPT2 ;Pointing to Duplicates
|
---|
23 | N PGE,CNT,MCNT,SCNT,S1CNT S (CNT,MCNT,SCNT,S1CNT)=0 D RPT2H,RPT2MA,RPT2F Q
|
---|
24 | ;----------------------------------------------
|
---|
25 | RPT1H ;Header for Duplicate Static File Entries
|
---|
26 | N TEMP S TEMP="" S $P(TEMP,"-",80)=""
|
---|
27 | W:$G(PGE) @IOF S PGE=$G(PGE)+1
|
---|
28 | W "Report 1",?20,"Duplicate Static File Entries",?60,"Page: ",PGE,!
|
---|
29 | W !,"STATIC",?8,"STATIC FILE",?35,"DUPLICATE ENTRY"
|
---|
30 | W !,"FILE #",?8," NAME ",?35,"IEN",?40,"KEY",!,TEMP,!
|
---|
31 | Q
|
---|
32 | RPT1M ;Duplicate Static File Entries Main
|
---|
33 | N FILE,FILENAME,TMP,SIZE S SIZE=IOM-40
|
---|
34 | S FILE="" F S FILE=$O(^TMP($J,"DUP","F",FILE)) Q:FILE="" D
|
---|
35 | .S FILENAME=$$GET1^DID(FILE,"","","NAME"),MCNT=$G(MCNT)+1
|
---|
36 | .S FILENAME=$E(FILENAME,1,26)
|
---|
37 | .I ^TMP($J,"DUP","F",FILE)=0 W $$TST("RPT1H",1),FILE,?8,FILENAME,?35,"**** No Duplicates ****" Q
|
---|
38 | .S TMP="" F S TMP=$O(^TMP($J,"DUP","I",FILE,TMP)) Q:TMP="" D RPT1A(FILE,TMP,FILENAME,SIZE)
|
---|
39 | Q
|
---|
40 | RPT1A(FILE,TMP,FILENAME,SIZE) ;
|
---|
41 | N LOOP,REC,REC2,TEMP,LINES,MULTI,TEXT,BEG,END
|
---|
42 | S REC="" F S REC=+$O(^TMP($J,"DUP","I",FILE,TMP,REC)) Q:REC=0 D
|
---|
43 | .Q:'$D(^TMP($J,"DUP","I",FILE,TMP,REC,1))
|
---|
44 | .Q:$P(^TMP($J,"DUP","I",FILE,TMP,REC,1),U,2)="*"
|
---|
45 | .F LOOP=1:1 S REC2=$P($G(^TMP($J,"DUP","I",FILE,TMP,REC,1)),U,LOOP) Q:REC2="*" D
|
---|
46 | ..S TEMP=^TMP($J,"DUP","I",FILE,TMP,REC2,0),CNT=$G(CNT)+1
|
---|
47 | ..S TEXT=TMP_TEMP
|
---|
48 | ..W $$TST("RPT1H",1),FILE,?8,FILENAME,?35,REC2,?40,$E(TEXT,1,SIZE)
|
---|
49 | ..I $L(TEXT)>SIZE D
|
---|
50 | ...S LINES=$L(TEXT)\SIZE
|
---|
51 | ...F MULTI=1:1:LINES D
|
---|
52 | ....S BEG=SIZE*MULTI+1,END=BEG+SIZE S:END>$L(TEXT) END=$L(TEXT)
|
---|
53 | ....W $$TST("RPT1H",1),?40,$E(TEXT,BEG,END)
|
---|
54 | Q
|
---|
55 | RPT1F ;Duplicate Static File Entries
|
---|
56 | N TEMP,DIR S TEMP="" S $P(TEMP,"-",80)=""
|
---|
57 | W "FILES: ",$$TST("RPT1H",3),TEMP,!,"TOTALS",!,"FILES: ",MCNT,?35,"DUPLICATES: ",$G(CNT)
|
---|
58 | I $E(IOST,1,2)="C-" S DIR(0)="E" D ^DIR
|
---|
59 | W @IOF
|
---|
60 | Q
|
---|
61 | ;-------------------------------------------------------------------
|
---|
62 | RPT2H ;Header for Pointing to Duplicates
|
---|
63 | N TEMP S TEMP="" S $P(TEMP,"-",80)=""
|
---|
64 | W:$G(PGE) @IOF S PGE=$G(PGE)+1
|
---|
65 | W "Report 2",?20,"Pointing to Duplicates",?60,"Page: ",PGE,!
|
---|
66 | W !,?56,"SUB",?64,"SUB"
|
---|
67 | W !,"STATIC",?8,"OLD",?16,"NEW",?24,"FROM ",?32,"MAIN",?40,"SUB",?48,"SUB",?56,"SUB",?64,"SUB"
|
---|
68 | W !,"FILE #",?8,"IEN",?16,"IEN",?24,"FILE #",?32,"IEN ",?40,"FILE",?48,"IEN",?56,"FILE",?64,"IEN"
|
---|
69 | W !,TEMP,!
|
---|
70 | Q
|
---|
71 | RPT2MA ;Main Print for Pointing to Duplicates
|
---|
72 | N FILE,TMP,TEMP,NIEN,OIEN,EX
|
---|
73 | S FILE="" F S FILE=$O(^TMP($J,"DUP","F",FILE)) Q:FILE="" D
|
---|
74 | .Q:^TMP($J,"DUP","F",FILE)=0
|
---|
75 | .Q:'$D(^TMP($J,"DUP","J",FILE))
|
---|
76 | .S CNT=$G(CNT)+1,TMP=""
|
---|
77 | .F S TMP=$O(^TMP($J,"DUP","J",FILE,TMP)) Q:TMP="" D
|
---|
78 | ..S TEMP=^TMP($J,"DUP","J",FILE,TMP,1),OIEN=^TMP($J,"DUP","J",FILE,TMP,"OLD"),NIEN=^TMP($J,"DUP","J",FILE,TMP,"NEW")
|
---|
79 | ..S EX="D RPT2"_$P(TEMP,U)_"(FILE,TEMP,OIEN,NIEN)"
|
---|
80 | ..X EX
|
---|
81 | Q
|
---|
82 | RPT2M(SFILE,TEMP,OIEN,NIEN) ;Pointing to with a Main File
|
---|
83 | N MAINFILE,MAINREC S (MAINFILE,MAINREC)=""
|
---|
84 | D RPT2B(TEMP,.MAINFILE,.MAINREC)
|
---|
85 | W $$TST("RPT2H",1),SFILE,?8,OIEN,?16,NIEN,?24,MAINFILE,?32,MAINREC,?40,"N/A"
|
---|
86 | Q
|
---|
87 | RPT2S(SFILE,TEMP,OIEN,NIEN) ;Pointing to with Sub-File
|
---|
88 | N MAINFILE,MAINREC,SUBFILE,SUBREC S (MAINFILE,MAINREC,SUBFILE,SUBREC)=""
|
---|
89 | D RPT2B(TEMP,.MAINFILE,.MAINREC),RPT2C(TEMP,.SUBFILE,.SUBREC)
|
---|
90 | W $$TST("RPT2H",1),SFILE,?8,OIEN,?16,NIEN,?24,MAINFILE,?32,MAINREC,?40,SUBFILE,?48,SUBREC
|
---|
91 | Q
|
---|
92 | RPT2SS(SFILE,TEMP,OIEN,NIEN) ;Pointing to with sub-file within sub-file
|
---|
93 | N MAINFILE,MAINREC,SUBFILE,SUBREC,SUBFILE1,SUBREC1 S (MAINFILE,MAINREC,SUBFILE,SUBREC)=""
|
---|
94 | D RPT2B(TEMP,.MAINFILE,.MAINREC),RPT2C(TEMP,.SUBFILE,.SUBREC)
|
---|
95 | S SUBFILE=$P(TEMP,U,6),SUBREC=$P(TEMP,U,7)
|
---|
96 | S SUBFILE1=$P(TEMP,U,10),SUBREC1=$P(TEMP,U,11)
|
---|
97 | W $$TST("RPT2H",1),SFILE,?8,OIEN,?16,NIEN,?24,MAINFILE,?32,MAINREC,?40,SUBFILE1,?48,SUBREC1,?56,SUBFILE,?64,SUBREC S S1CNT=$G(S1CNT)+1
|
---|
98 | Q
|
---|
99 | RPT2B(TEMP,MFILE,MREC) ;Get main file and main record
|
---|
100 | S MFILE=$P(TEMP,U,2),MREC=$P(TEMP,U,3),MCNT=$G(MCNT)+1
|
---|
101 | Q
|
---|
102 | RPT2C(TEMP,SFILE,SREC) ;Get Sub-file and sub-record
|
---|
103 | S SFILE=$P(TEMP,U,6),SREC=$P(TEMP,U,7),SCNT=$G(SCNT)+1
|
---|
104 | Q
|
---|
105 | RPT2F ;Footer for Pointing to Duplicates
|
---|
106 | N TEMP,DIR S TEMP="" S $P(TEMP,"-",80)=""
|
---|
107 | W $$TST("RPT2H",3),TEMP
|
---|
108 | W !,"TOTALS:",!,?2,$G(CNT),?24,$G(MCNT),?40,$G(SCNT),?56,$G(S1CNT)
|
---|
109 | I $E(IOST,1,2)="C-" S DIR(0)="E" D ^DIR
|
---|
110 | W @IOF
|
---|
111 | Q
|
---|
112 | TST(RTN,SKIP) ;Checks $Y and does formfeed if needed and skips the new lines
|
---|
113 | N LINE,DIR
|
---|
114 | I ($Y+SKIP+$S($E(IOST,1,2)="C-":2,1:4))>IOSL D
|
---|
115 | .I $E(IOST,1,2)="C-" S DIR(0)="E",DIR("A")="Press RETURN to continue: " D ^DIR
|
---|
116 | .D @RTN S SKIP=1
|
---|
117 | F LINE=1:1:SKIP W !
|
---|
118 | Q ""
|
---|