| 1 | PRCGPM1 ;WIRMFO@ALTOONA/CTB/WIRMFO/PLT/BGJ - IFCAP PURGEMASTER PROCESS PRCGPM CONT. ;12/10/97  9:53 AM
 | 
|---|
| 2 | V ;;5.1;IFCAP;**95**;Oct 20, 2000
 | 
|---|
| 3 |  ;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
| 4 |  ;This routine contains misc functions/tools to be used by the
 | 
|---|
| 5 |  ;purge package
 | 
|---|
| 6 | ADD(X,Y,Z) ;PARAMETER CALL TO ADD NEW ENTRY TO PURGE MASTER FILE
 | 
|---|
| 7 |  ;RETURNS Z=0 (ZERO) IF UNSUCCESSFUL, Z=1 (ONE) IF SUCCESSFUL
 | 
|---|
| 8 |  ;ARGUEMENT LIST = RECORD NUMBER (DA)^ENTRY POINT^ROUTINE NAME^VARIABLE STRING
 | 
|---|
| 9 |  ;X= ENTRY POINT^ROUTINE NAME
 | 
|---|
| 10 |  ;Y= VARIABLE STRING
 | 
|---|
| 11 |  NEW NODE,LAST,TOTAL,DONE
 | 
|---|
| 12 |  I X="" S Z=0 QUIT
 | 
|---|
| 13 |  L +^PRC(443.1,0):10 I '$T S Z=0 QUIT
 | 
|---|
| 14 |  S NODE=^PRC(443.1,0),LAST=$P(NODE,"^",3),TOTAL=$P(NODE,"^",4)
 | 
|---|
| 15 |  F  D  Q:$D(DONE)
 | 
|---|
| 16 |  . S LAST=LAST+1
 | 
|---|
| 17 |  . S:X'["^" X="^"_X
 | 
|---|
| 18 |  . I '$D(^PRC(443.1,LAST)) S ^PRC(443.1,LAST,0)=LAST_"^"_X_"^"_Y,$P(^PRC(443.1,0),"^",3,4)=(LAST_"^"_(TOTAL+1)),DONE=1
 | 
|---|
| 19 |  . QUIT
 | 
|---|
| 20 |  L -^PRC(443.1,0)
 | 
|---|
| 21 |  S Z=1 QUIT
 | 
|---|
| 22 | REMOVE(DA) ;REMOVE ENTRY FROM FILE 443.1
 | 
|---|
| 23 |  ;PARAMATER CALL TO REMOVE RECORD 'DA' FROM FILE
 | 
|---|
| 24 |  NEW NODE,LAST,TOTAL
 | 
|---|
| 25 |  I +DA=0!(DA'=+DA) QUIT
 | 
|---|
| 26 |  I '$D(^PRC(443.1,DA)) QUIT
 | 
|---|
| 27 |  FOR  L +^PRC(443.1,0):1 I  Q
 | 
|---|
| 28 |  S NODE=^PRC(443.1,0),LAST=$P(NODE,"^",3),TOTAL=$P(NODE,"^",4)
 | 
|---|
| 29 |  K ^PRC(443.1,DA) S TOTAL=TOTAL-1
 | 
|---|
| 30 |  I DA'<LAST F  S LAST=LAST-1 Q:($D(^PRC(443.1,LAST))!(LAST=0))
 | 
|---|
| 31 |  S $P(^PRC(443.1,0),"^",3,4)=LAST_"^"_TOTAL
 | 
|---|
| 32 |  L -^PRC(443.1,0)
 | 
|---|
| 33 |  QUIT
 | 
|---|
| 34 | ADDIP(X,Y,Z) ;PARAMETER CALL TO ADD NEW ENTRY TO INPROCESS FILE
 | 
|---|
| 35 |  ;RETURNS Z=0 (ZERO) IF UNSUCCESSFUL, Z=DA NUMBER IF SUCCESSFUL
 | 
|---|
| 36 |  ;ARGUEMENT LIST = RECORD NUM (DA)^ENTRY POINT^ROUTINE NAME^VARIABLE STRING
 | 
|---|
| 37 |  ;X= ENTRY POINT^ROUTINE NAME
 | 
|---|
| 38 |  ;Y= VARIABLE STRING
 | 
|---|
| 39 |  NEW NODE,LAST,TOTAL,DONE
 | 
|---|
| 40 |  I (X="") S Z=0 QUIT
 | 
|---|
| 41 |  F  L +^PRC(443.3,0):1 I  Q
 | 
|---|
| 42 |  S NODE=^PRC(443.3,0),LAST=$P(NODE,"^",3),TOTAL=$P(NODE,"^",4)
 | 
|---|
| 43 |  F  D  Q:$D(DONE)
 | 
|---|
| 44 |  . S LAST=LAST+1
 | 
|---|
| 45 |  . S:X'["^" X="^"_X
 | 
|---|
| 46 |  . I '$D(^PRC(443.3,LAST)) S ^PRC(443.3,LAST,0)=LAST_"^"_X_"^"_Y,^(1)=$H,$P(^PRC(443.3,0),"^",3,4)=(LAST_"^"_(TOTAL+1)),DONE=LAST
 | 
|---|
| 47 |  . QUIT
 | 
|---|
| 48 |  L -^PRC(443.3,0)
 | 
|---|
| 49 |  S Z=DONE QUIT
 | 
|---|
| 50 | REMIP(DA) ;PARAMETER CALL TO REMOVE RECORD 'DA' FROM FILE 443.3
 | 
|---|
| 51 |  NEW NODE,LAST,TOTAL
 | 
|---|
| 52 |  I +DA=0!(DA'=+DA) QUIT
 | 
|---|
| 53 |  I '$D(^PRC(443.3,DA)) QUIT
 | 
|---|
| 54 |  FOR  L +^PRC(443.3,0):1 I  Q
 | 
|---|
| 55 |  S NODE=^PRC(443.3,0),LAST=$P(NODE,"^",3),TOTAL=$P(NODE,"^",4)
 | 
|---|
| 56 |  K ^PRC(443.3,DA) S TOTAL=TOTAL-1
 | 
|---|
| 57 |  I DA'<LAST F  S LAST=LAST-1 Q:($D(^PRC(443.3,LAST))!(LAST=0))
 | 
|---|
| 58 |  S $P(^PRC(443.3,0),"^",3,4)=LAST_"^"_TOTAL
 | 
|---|
| 59 |  I $O(^PRC(443.3,0))="" S $P(^PRC(443.0),"^",3,4)="^"
 | 
|---|
| 60 |  L -^PRC(443.3,0)
 | 
|---|
| 61 |  QUIT
 | 
|---|
| 62 | CLN445 ;add line to delete
 | 
|---|
| 63 |  S MYHLD=0,MYCOUNT=0,THISCNT=0
 | 
|---|
| 64 |  F  S MYHLD=$O(^PRC(443.1,MYHLD)) Q:'MYHLD  S MYCOUNT=MYHLD
 | 
|---|
| 65 |  S LAST=MYCOUNT+1
 | 
|---|
| 66 |  S X="FIND445^PRCG238P"
 | 
|---|
| 67 |  S THISCNT=$P(^PRC(443.1,0),U,4)
 | 
|---|
| 68 |  S Y=""
 | 
|---|
| 69 |  S:X'["^" X="^"_X
 | 
|---|
| 70 |  I '$D(^PRC(443.1,LAST)) S ^PRC(443.1,LAST,0)=LAST_"^"_X_"^"_Y,$P(^PRC(443.1,0),"^",3,4)=(LAST_"^"_(THISCNT+1))
 | 
|---|
| 71 |  K MYHLD,MYCOUNT,THISCNT
 | 
|---|
| 72 |  Q
 | 
|---|