| 1 | MAGQBUT ;WOIFO/RMP - Imaging Background Processor Utilities [ 03/25/2001 11:20 ]
 | 
|---|
| 2 |  ;;3.0;IMAGING;**7,8,48,20**;Apr 12, 2006
 | 
|---|
| 3 |  ;; +---------------------------------------------------------------+
 | 
|---|
| 4 |  ;; | Property of the US Government.                                |
 | 
|---|
| 5 |  ;; | No permission to copy or redistribute this software is given. |
 | 
|---|
| 6 |  ;; | Use of unreleased versions of this software requires the user |
 | 
|---|
| 7 |  ;; | to execute a written test agreement with the VistA Imaging    |
 | 
|---|
| 8 |  ;; | Development Office of the Department of Veterans Affairs,     |
 | 
|---|
| 9 |  ;; | telephone (301) 734-0100.                                     |
 | 
|---|
| 10 |  ;; |                                                               |
 | 
|---|
| 11 |  ;; | The Food and Drug Administration classifies this software as  |
 | 
|---|
| 12 |  ;; | a medical device.  As such, it may not be changed in any way. |
 | 
|---|
| 13 |  ;; | Modifications to this software may result in an adulterated   |
 | 
|---|
| 14 |  ;; | medical device under 21CFR820, the use of which is considered |
 | 
|---|
| 15 |  ;; | to be a violation of US Federal Statutes.                     |
 | 
|---|
| 16 |  ;; +---------------------------------------------------------------+
 | 
|---|
| 17 |  ;;
 | 
|---|
| 18 | FTYPE(RESULT) ;
 | 
|---|
| 19 |  ; RPC[MAGQ FTYPE]
 | 
|---|
| 20 |  S X="ERR^MAGQBTM",@^%ZOSF("TRAP")
 | 
|---|
| 21 |  N MAX,INDX,PLACE
 | 
|---|
| 22 |  S PLACE=$$PLACE^MAGBAPI(+$G(DUZ(2)))
 | 
|---|
| 23 |  S U="^",MAX=$P(^MAG(2006.1,PLACE,2,0),U,4),INDX=0
 | 
|---|
| 24 |  Q:+MAX<1
 | 
|---|
| 25 |  F  S INDX=$O(^MAG(2006.1,PLACE,2,INDX)) Q:INDX'?1N.N  D  Q:INDX=MAX
 | 
|---|
| 26 |  . S RESULT(INDX-1)=$G(^MAG(2006.1,PLACE,2,INDX,0))
 | 
|---|
| 27 |  Q
 | 
|---|
| 28 | CHGSERV(RESULT,NOTIFY) ;
 | 
|---|
| 29 |  ; RPC[MAGQ FS CHNGE]
 | 
|---|
| 30 |  S X="ERR^MAGQBTM",@^%ZOSF("TRAP")
 | 
|---|
| 31 |  N SPACE,DATA,IEN,SIZE,CWL,MIN,CNT,TNODE,TINT,NOW,TLTIME,TOD,PLACE,TS,AUTON
 | 
|---|
| 32 |  S U="^",(INDX,SPACE,SIZE,CNT)=0,(RESULT,IEN)=""
 | 
|---|
| 33 |  S PLACE=$$PLACE^MAGBAPI(+$G(DUZ(2)))
 | 
|---|
| 34 |  S MIN=$$SPARM
 | 
|---|
| 35 |  S CWL=$$CWL^MAGBAPI(PLACE)
 | 
|---|
| 36 |  S DATA=$S(CWL?1N.N:$G(^MAG(2005.2,CWL,0)),1:0)
 | 
|---|
| 37 |  ;Check for scheduled purge
 | 
|---|
| 38 |  S AUTON=$G(^MAG(2006.1,PLACE,5))
 | 
|---|
| 39 |  I $P(AUTON,U,3) D
 | 
|---|
| 40 |  . N T1,T2
 | 
|---|
| 41 |  . S T1="0000",T2=$P(AUTON,U,5),T1=$E(T1,1,($L(T1)-$L(T2)))_T2
 | 
|---|
| 42 |  . I ($$FMADD^XLFDT($$NOW^XLFDT,-$P(AUTON,U,4),"","",""))>($P(AUTON,U,6)_"."_T1) D
 | 
|---|
| 43 |  . . S $P(RESULT,U,4)="PURGE"
 | 
|---|
| 44 |  . . S $P(^MAG(2006.1,PLACE,5),U,6)=$P($$NOW^XLFDT,".")
 | 
|---|
| 45 |  . . Q
 | 
|---|
| 46 |  . Q
 | 
|---|
| 47 |  I $P($G(^MAG(2006.1,PLACE,1)),U,10) D  Q  ;Cache balancing off
 | 
|---|
| 48 |  . S SPACE=+$P($G(^MAG(2005.2,CWL,0)),U,5),SIZE=+$P($G(^MAG(2005.2,CWL,0)),U,3)
 | 
|---|
| 49 |  . I (SIZE>0)&(((SPACE/SIZE)*100)>MIN) D  Q
 | 
|---|
| 50 |  . . S $P(RESULT,U)=1
 | 
|---|
| 51 |  . . D  Q
 | 
|---|
| 52 |  . . . I SIZE S $P(RESULT,U,5)=$P(((SPACE/SIZE)*100),".")_"."_$E($P(((SPACE/SIZE)*100),".",2),1,2) Q
 | 
|---|
| 53 |  . . . E  S $P(RESULT,U,5)="0.00" Q
 | 
|---|
| 54 |  . E  D
 | 
|---|
| 55 |  . . I SIZE S $P(RESULT,U,5)=$P(((SPACE/SIZE)*100),".")_"."_$E($P(((SPACE/SIZE)*100),".",2),1,2)
 | 
|---|
| 56 |  . . E  S $P(RESULT,U,5)="0.00"
 | 
|---|
| 57 |  . . S $P(RESULT,U)=$S(SPACE>0:2,1:0)
 | 
|---|
| 58 |  . . S $P(RESULT,U,2,3)=$P(^MAG(2005.2,$P(^MAG(2006.1,PLACE,0),U,3),0),U,1,2)
 | 
|---|
| 59 |  . . I ($P($G(^MAG(2006.1,PLACE,5)),U)&(SPACE>0)) S $P(RESULT,U,4)="PURGE" Q
 | 
|---|
| 60 |  . . D:(NOTIFY!(SPACE>0)) TMESS(SPACE,PLACE)
 | 
|---|
| 61 |  . . Q
 | 
|---|
| 62 |  . Q
 | 
|---|
| 63 |  D FSP(MIN,.SPACE,.SIZE,.IEN,.TS,PLACE)
 | 
|---|
| 64 |  I SIZE S $P(RESULT,U,5)=$P(((SPACE/SIZE)*100),".")_"."_$E($P(((SPACE/SIZE)*100),".",2),1,2)
 | 
|---|
| 65 |  E  S $P(RESULT,U,5)="0.00"
 | 
|---|
| 66 |  I IEN D SCWL(IEN,PLACE)
 | 
|---|
| 67 |  I SIZE>0,(((SPACE/SIZE)*100)>MIN) S $P(RESULT,U)=1 Q
 | 
|---|
| 68 |  S $P(RESULT,U)=$S(SPACE>0:2,1:0)
 | 
|---|
| 69 |  S $P(RESULT,U,2,3)=$P(^MAG(2005.2,$P(^MAG(2006.1,PLACE,0),U,3),0),U,1,2)
 | 
|---|
| 70 |  I ($P($G(^MAG(2006.1,PLACE,5)),U)&(SPACE>0)) D  Q
 | 
|---|
| 71 |  . S $P(RESULT,U,4)="PURGE"
 | 
|---|
| 72 |  . D TPMESS^MAGQBUT5(PLACE)
 | 
|---|
| 73 |  . Q
 | 
|---|
| 74 |  D:(NOTIFY!(SPACE>0)) TMESS(TS,PLACE)
 | 
|---|
| 75 |  Q
 | 
|---|
| 76 | TMESS(TS,PLACE) ;Trigger a message
 | 
|---|
| 77 |  N TN S TN=^MAG(2006.1,PLACE,3)
 | 
|---|
| 78 |  Q:$$FMADD^XLFDT($P(TN,"^",11),"",$P(TN,"^",7),"","")>$$NOW^XLFDT
 | 
|---|
| 79 |  D ICCL^MAGQBUT1(CNT_U_TS_U_SPACE_U_$P($G(^MAG(2006.1,PLACE,5)),U),$P(TN,"^",7)_" hours.",PLACE)
 | 
|---|
| 80 |  Q
 | 
|---|
| 81 | TPURGE ; 
 | 
|---|
| 82 |  S $P(RESULT,U,2,3)=$P(^MAG(2005.2,$P(^MAG(2006.1,PLACE,0),U,3),0),1,2)
 | 
|---|
| 83 |  S TNODE=^MAG(2006.1,PLACE,3)
 | 
|---|
| 84 |  S TINT=$P(TNODE,"^",8) I "^W^D^"[("^"_TINT_"^") D  ;CONDITIONAL PURGE
 | 
|---|
| 85 |  . S NOW=$$NOW^XLFDT,TOD=$P(TNODE,"^",9)
 | 
|---|
| 86 |  . Q:NOW<$$FMADD^XLFDT($P(NOW,"."),"",TOD,"","")
 | 
|---|
| 87 |  . S TLTIME=$P(TNODE,"^",10)
 | 
|---|
| 88 |  . I NOW>$$FMADD^XLFDT(TLTIME,$S(TINT="D":1,TINT="W":7),"","","") D
 | 
|---|
| 89 |  . . S $P(RESULT,"^",4)="PURGE"
 | 
|---|
| 90 |  Q
 | 
|---|
| 91 | MAXSP(IEN,FS,SZ,NODE,MIN) ;
 | 
|---|
| 92 |  N SPACE,SIZE
 | 
|---|
| 93 |  S SPACE=+$P(NODE,U,5),SIZE=+$P(NODE,U,3)
 | 
|---|
| 94 |  I SIZE>0,(((SPACE/SIZE)*100)>MIN),SPACE>FS D  Q 1
 | 
|---|
| 95 |  . S FS=SPACE,SZ=SIZE
 | 
|---|
| 96 |  Q 0
 | 
|---|
| 97 | HFIND(SHARE,IEN) ;HASHED SHARE AT THE SAME LOCATION
 | 
|---|
| 98 |  N INDEX,NODE,RESULT
 | 
|---|
| 99 |  S INDEX=0,RESULT=""
 | 
|---|
| 100 |  F  S INDEX=$O(^MAG(2005.2,"AC",SHARE,INDEX)) Q:INDEX'?1N.N  D
 | 
|---|
| 101 |  . Q:INDEX=IEN
 | 
|---|
| 102 |  . I $P(^MAG(2005.2,INDEX,0),"^",8)="Y" S RESULT=1
 | 
|---|
| 103 |  Q RESULT
 | 
|---|
| 104 | SPARM() ;Site Parameter for PERCENT server space to be held in reserve
 | 
|---|
| 105 |  N VALUE
 | 
|---|
| 106 |  S VALUE=$P($G(^MAG(2006.1,$$PLACE^MAGBAPI(+$G(DUZ(2))),1)),U,8)
 | 
|---|
| 107 |  Q $S(VALUE>0:VALUE,1:5)
 | 
|---|
| 108 | SCWL(IEN,PLACE) ;
 | 
|---|
| 109 |  S $P(^MAG(2006.1,PLACE,0),U,3)=IEN
 | 
|---|
| 110 |  S $P(^MAG(2006.1,PLACE,"PACS"),U,3)=IEN
 | 
|---|
| 111 |  Q
 | 
|---|
| 112 | FSP(MIN,SPACE,SIZE,IEN,TOTAL,PLACE) ; Find Space
 | 
|---|
| 113 |  N INDX,DATA S (TOTAL,INDX)=0
 | 
|---|
| 114 |  F  S INDX=$O(^MAG(2005.2,INDX)) Q:INDX'?1N.N  D
 | 
|---|
| 115 |  . S DATA=$G(^MAG(2005.2,INDX,0))
 | 
|---|
| 116 |  . Q:$P(DATA,U,6,7)'["1^MAG"
 | 
|---|
| 117 |  . Q:$P(DATA,U,9)="1"  ;ROUTING SHARE
 | 
|---|
| 118 |  . Q:$P(DATA,U,10)'=PLACE
 | 
|---|
| 119 |  . I $P(DATA,U,8)'="Y",$$HFIND($P(DATA,"^",2),INDX) Q
 | 
|---|
| 120 |  . Q:$P(DATA,U,2)[":"
 | 
|---|
| 121 |  . Q:$E($P(DATA,U,2),1,2)'="\\"
 | 
|---|
| 122 |  . S TOTAL=TOTAL+(+$P(DATA,U,5))
 | 
|---|
| 123 |  . S CNT=CNT+1
 | 
|---|
| 124 |  . I $$MAXSP(INDX,.SPACE,.SIZE,DATA,MIN) S IEN=INDX
 | 
|---|
| 125 |  Q
 | 
|---|
| 126 | SLAD(RESULT) ;SITE LAST ACCESS DATE(DEFAULT TO 180)
 | 
|---|
| 127 |  N PLACE
 | 
|---|
| 128 |  S PLACE=$$PLACE^MAGBAPI(+$G(DUZ(2)))
 | 
|---|
| 129 |  S RESULT=$S(+$P(^MAG(2006.1,PLACE,1),"^",2):+$P(^MAG(2006.1,PLACE,1),"^",2),1:180)
 | 
|---|
| 130 |  Q
 | 
|---|
| 131 | DQUE(QIEN) ;
 | 
|---|
| 132 |  N ZNODE,TYPE,MAGIEN,PLACE,QP,QT
 | 
|---|
| 133 |  S ZNODE=$G(^MAGQUEUE(2006.03,QIEN,0))
 | 
|---|
| 134 |  S PLACE=$P(ZNODE,U,12)
 | 
|---|
| 135 |  S TYPE=$P(ZNODE,U)
 | 
|---|
| 136 |  I TYPE="" D DBQ(QIEN,PLACE,ZNODE) Q
 | 
|---|
| 137 |  S QP=$O(^MAGQUEUE(2006.031,"C",PLACE,TYPE,""))
 | 
|---|
| 138 |  L +^MAGQUEUE(2006.031,QP,0)
 | 
|---|
| 139 |  S QT=+$P($G(^MAGQUEUE(2006.031,QP,0)),U,5)
 | 
|---|
| 140 |  S $P(^MAGQUEUE(2006.031,QP,0),U,5)=QT-1
 | 
|---|
| 141 |  L -^MAGQUEUE(2006.031,QP,0)
 | 
|---|
| 142 |  K ^MAGQUEUE(2006.03,"C",PLACE,$P(ZNODE,U),QIEN)
 | 
|---|
| 143 |  K ^MAGQUEUE(2006.03,QIEN,0)
 | 
|---|
| 144 |  I $P(ZNODE,U,5)]"" D
 | 
|---|
| 145 |  . K ^MAGQUEUE(2006.03,"D",PLACE,TYPE,$E($P(ZNODE,U,5),1,30),QIEN)
 | 
|---|
| 146 |  L +^MAGQUEUE(2006.03,0)
 | 
|---|
| 147 |  S $P(^MAGQUEUE(2006.03,0),"^",4)=$P(^MAGQUEUE(2006.03,0),"^",4)-1
 | 
|---|
| 148 |  L -^MAGQUEUE(2006.03,0)
 | 
|---|
| 149 |  Q:("^JBTOHD^PREFET^JUKEBOX^")'[("^"_TYPE_"^")
 | 
|---|
| 150 |  S MAGIEN=$P(ZNODE,U,7)
 | 
|---|
| 151 |  Q:'MAGIEN
 | 
|---|
| 152 |  I TYPE="JUKEBOX" D  Q
 | 
|---|
| 153 |  . K ^MAGQUEUE(2006.03,"E",PLACE,MAGIEN,QIEN)
 | 
|---|
| 154 |  I "^JBTOHD^PREFET^"[("^"_TYPE_"^") D  Q
 | 
|---|
| 155 |  . Q:$P(ZNODE,U,8)']""
 | 
|---|
| 156 |  . K ^MAGQUEUE(2006.03,"F",PLACE,MAGIEN,$P(ZNODE,U,8),QIEN)
 | 
|---|
| 157 |  . Q
 | 
|---|
| 158 |  Q
 | 
|---|
| 159 | DQUE1(RESULT,QIEN) ;[MAGQB QUEDEL]
 | 
|---|
| 160 |  D DQUE(QIEN)
 | 
|---|
| 161 |  Q
 | 
|---|
| 162 | DBQ(QIEN,PLACE,ZNODE) ;
 | 
|---|
| 163 |  N INDX
 | 
|---|
| 164 |  F INDX="DELETE","ABSTRACT","JUKEBOX","JBTOHD","PREFET","IMPORT" D
 | 
|---|
| 165 |  . K ^MAGQUEUE(2006.03,"C",PLACE,INDX,QIEN)
 | 
|---|
| 166 |  . K:$P(ZNODE,U,5)]"" ^MAGQUEUE(2006.03,"D",PLACE,INDX,$E($P(ZNODE,U,5),1,30),QIEN)
 | 
|---|
| 167 |  . I INDX="JUKEBOX" D
 | 
|---|
| 168 |  . . K:$P(ZNODE,U,7) ^MAGQUEUE(2006.03,"E",PLACE,$P(ZNODE,U,7),QIEN) Q
 | 
|---|
| 169 |  . I "^JBTOHD^PREFET^"[("^"_INDX_"^") D 
 | 
|---|
| 170 |  . . K:($P(ZNODE,U,7)&$P(ZNODE,U,8)]"") ^MAGQUEUE(2006.03,"F",PLACE,$P(ZNODE,U,7),$P(ZNODE,U,8),QIEN) Q
 | 
|---|
| 171 |  K ^MAGQUEUE(2006.03,QIEN,0)
 | 
|---|
| 172 |  Q
 | 
|---|
| 173 | JBQUE(RESULT,QIEN) ; RPC[MAGQBP JBQUE]
 | 
|---|
| 174 |  S X="ERR^MAGQBTM",@^%ZOSF("TRAP")
 | 
|---|
| 175 |  S RESULT=$$JUKEBOX^MAGBAPI(QIEN,$$PLACE^MAGBAPI(+$G(DUZ(2))))
 | 
|---|
| 176 |  Q
 | 
|---|
| 177 | POSTI ;
 | 
|---|
| 178 |  D INI^MAGUSIT
 | 
|---|
| 179 |  N DIC,X,DA,Y,NODE1,NODE3,PLACE,KEYS
 | 
|---|
| 180 |  S PLACE=$$PLACE^MAGBAPI(+$G(DUZ(2)))
 | 
|---|
| 181 |  Q:'PLACE
 | 
|---|
| 182 |  S DIC="^MAG(2006.1,"_PLACE_",2,",DIC(0)="XL",X="TXT",DLAYGO="2006.112"
 | 
|---|
| 183 |  S DA(1)=PLACE,DIC("P")="2006.112"
 | 
|---|
| 184 |  D ^DIC
 | 
|---|
| 185 |  S (DIE,DIC,DLAYGO)=2006.1,DA=PLACE,DIC(0)="XL"
 | 
|---|
| 186 |  S NODE1=$G(^MAG(2006.1,1,1)),NODE3=$G(^MAG(2006.1,PLACE,3)),DR=""
 | 
|---|
| 187 |  S KEYS=$G(^MAG(2006.1,PLACE,"KEYS"))
 | 
|---|
| 188 |  S DR=$S(($P(NODE1,"^",2)'?1N.N):"8///45",1:DR)
 | 
|---|
| 189 |  I ($P(NODE1,"^",5)'?1N.N) S DR=DR_$S((DR["/"):";",1:"")_"9///45"
 | 
|---|
| 190 |  I ($P(NODE1,"^",10)'?1N.N) S DR=DR_$S((DR["/"):";",1:"")_"20///1"
 | 
|---|
| 191 |  I ($P(NODE3,"^",1)'?1N.N) S DR=DR_$S((DR["/"):";",1:"")_"21///45"
 | 
|---|
| 192 |  I ($P(NODE3,"^",2)'?1N.N) S DR=DR_$S((DR["/"):";",1:"")_"22///45"
 | 
|---|
| 193 |  I ($P(NODE3,"^",3)'?1N.N) S DR=DR_$S((DR["/"):";",1:"")_"23///120"
 | 
|---|
| 194 |  I ($P(NODE3,"^",4)'?1N.N) S DR=DR_$S((DR["/"):";",1:"")_"24///120"
 | 
|---|
| 195 |  I ($P(NODE3,"^",5)'?1N.N) S DR=DR_$S((DR["/"):";",1:"")_"102///10"
 | 
|---|
| 196 |  I ($P(NODE3,"^",6)'?1N.N) S DR=DR_$S((DR["/"):";",1:"")_"103///15"
 | 
|---|
| 197 |  I ($P(NODE3,"^",7)'?1N.N) S DR=DR_$S((DR["/"):";",1:"")_"11.5///6"
 | 
|---|
| 198 |  S DR=DR_$S((DR["/"):";",1:"")_"11.6///D"
 | 
|---|
| 199 |  I ($P(NODE3,"^",9)'?1N.N) S DR=DR_$S((DR["/"):";",1:"")_"11.7///4"
 | 
|---|
| 200 |  I ($P(NODE3,"^",10)'?1N.E) D
 | 
|---|
| 201 |  . S DR=DR_$S((DR["/"):";",1:"")_"11.8///"_$$NOW^XLFDT
 | 
|---|
| 202 |  I ($P(NODE3,"^",11)'?1N.E) D
 | 
|---|
| 203 |  . S DR=DR_$S((DR["/"):";",1:"")_"11.9///"_$$NOW^XLFDT
 | 
|---|
| 204 |  I ($P(KEYS,"^",2)'?1N.N) S DR=DR_$S((DR["/"):";",1:"")_"121///60"
 | 
|---|
| 205 |  I ($P(KEYS,"^",3)'?1N.N) S DR=DR_$S((DR["/"):";",1:"")_"122///90"
 | 
|---|
| 206 |  D ^DIE
 | 
|---|
| 207 |  ; Enable the Imaging Health Summary component
 | 
|---|
| 208 |  I $D(^GMT(142.1,235)) D
 | 
|---|
| 209 |  . S (DIE,DIC)=142.1,DA=235
 | 
|---|
| 210 |  . S DR="5///@;8///@"
 | 
|---|
| 211 |  . D ^DIE
 | 
|---|
| 212 |  K DIE,DIC,DA,Y,X,DLAYGO,DR
 | 
|---|
| 213 |  D MMGRP^MAGQAI
 | 
|---|
| 214 |  Q
 | 
|---|
| 215 | X1 ; CLEANUP
 | 
|---|
| 216 |  N PC
 | 
|---|
| 217 |  S DIR(0)="Y",DIR("B")="YES"
 | 
|---|
| 218 |  S DIR("?")="This activity removes already processed queues which precede the current queue pointer.  These queues are not necessary for file recovery.The current BP software will recover files during purge or by the verify."
 | 
|---|
| 219 |  S DIR("A")="Do you wish to remove old processed Background Processor Queues" D
 | 
|---|
| 220 |  . D ^DIR Q:($D(DIRUT)!(Y'="1"))
 | 
|---|
| 221 |  . F PC="JUKEBOX","JBTOHD","PREFET","IMPORT","GCC","DELETE" D FOQUE("",PC)
 | 
|---|
| 222 |  ; REINDEX FIELD 4 (COMPLETION STATUS) IN FILE 2006.03 (QUEUE)
 | 
|---|
| 223 |  K DIR
 | 
|---|
| 224 |  K ^MAGQUEUE(2006.03,"C")
 | 
|---|
| 225 |  S DIK="^MAGQUEUE(2006.03,"
 | 
|---|
| 226 |  D IXALL^DIK K DIK
 | 
|---|
| 227 |  K DIRUT
 | 
|---|
| 228 |  Q
 | 
|---|
| 229 | FOQUE(RESULT,PROC) ;[MAGQ COQ] PASS A BP PROCESS TO DELETE OLD FAILED QUEUES
 | 
|---|
| 230 |  N XX,JXMAX,JHMAX,QIEN,PLACE,LQP,CNT
 | 
|---|
| 231 |  S PLACE=$$PLACE^MAGBAPI(+$G(DUZ(2))),CNT=0
 | 
|---|
| 232 |  S QIEN=$O(^MAGQUEUE(2006.031,"C",PLACE,PROC,""))
 | 
|---|
| 233 |  I QIEN D
 | 
|---|
| 234 |  . S LQP=$P($G(^MAGQUEUE(2006.031,QIEN,0)),"^",2)
 | 
|---|
| 235 |  . Q:'LQP
 | 
|---|
| 236 |  . S XX=0
 | 
|---|
| 237 |  . F  S XX=$O(^MAGQUEUE(2006.03,"C",PLACE,PROC,XX)) Q:'XX  Q:XX>(LQP)  D
 | 
|---|
| 238 |  . . S CNT=CNT+1
 | 
|---|
| 239 |  . . D DQUE(XX)
 | 
|---|
| 240 |  S RESULT=CNT
 | 
|---|
| 241 |  Q
 | 
|---|