| 1 | XMJMLN ;ISC-SF/GB-List/Read new messages ;12/12/2001  08:53
 | 
|---|
| 2 |  ;;8.0;MailMan;;Jun 28, 2002
 | 
|---|
| 3 |  ; Replaces LIST,PRIO^XMA0A (ISC-WASH/CAP)
 | 
|---|
| 4 | LISTONE(XMDUZ,XMK,XMKN,XMTYPE) ; List new/priority messages in one basket
 | 
|---|
| 5 |  ; XMTYPE   N0=New; N=Priority
 | 
|---|
| 6 |  N XMKZ,XMZ,XMCNT,XMABORT,XMLEN,XMFIRST,XMPAGE,XMDETAIL,XMPMAX,XMKALL,XMIA,XMZOOM,XMMORE,XMCD,XMOPT,XMOX
 | 
|---|
| 7 |  S XMIA=1 ; Interactive
 | 
|---|
| 8 |  I '$D(^XMB(3.7,XMDUZ,XMTYPE,XMK)) D  Q
 | 
|---|
| 9 |  . W !!,$$EZBLD^DIALOG($S(XMTYPE="N":34016,1:34015)) ; You have no new (priority) messages in this basket.
 | 
|---|
| 10 |  K ^TMP("XM",$J,"MSG"),^TMP("XM",$J,".")
 | 
|---|
| 11 |  S (XMKZ,XMZ)="",(XMPAGE,XMCNT,XMKALL,XMZOOM,XMCD,XMABORT)=0,(XMDETAIL,XMMORE)=1
 | 
|---|
| 12 |  S XMPMAX=IOSL-3
 | 
|---|
| 13 |  D SETOPT^XMJMLR1(XMDUZ,0,.XMOPT,.XMOX)
 | 
|---|
| 14 |  S XMLEN("XMKZ")=$L($P(^XMB(3.7,XMDUZ,2,XMK,0),U,2))
 | 
|---|
| 15 |  D INIT^XMJML(XMDUZ,XMK,XMKN,XMDETAIL,.XMLEN,1)
 | 
|---|
| 16 |  F  D  Q:XMABORT
 | 
|---|
| 17 |  . I XMCD S XMCD=0,XMDETAIL='XMDETAIL D INIT^XMJML(XMDUZ,XMK,XMKN,XMDETAIL,.XMLEN,1)
 | 
|---|
| 18 |  . D DISPLAY(XMDUZ,XMKALL,XMTYPE,XMDETAIL,XMK,XMKN,.XMKZ,.XMZ,.XMCNT,.XMFIRST,.XMPAGE,.XMMORE,.XMLEN,XMZOOM,XMPMAX)
 | 
|---|
| 19 |  . D CHOOSE(XMDUZ,XMKALL,XMK,.XMKZ,.XMFIRST,.XMPAGE,XMMORE,.XMLEN,.XMZOOM,.XMOPT,.XMOX,"READMSG",.XMABORT)
 | 
|---|
| 20 |  . S:'$D(^XMB(3.7,XMDUZ,XMTYPE,XMK)) XMABORT=1
 | 
|---|
| 21 |  K ^TMP("XM",$J,"MSG"),^TMP("XM",$J,".")
 | 
|---|
| 22 |  Q
 | 
|---|
| 23 | LISTALL(XMDUZ,XMTYPE) ; List new/priority messages in all baskets
 | 
|---|
| 24 |  ; XMTYPE   N0=New; N=Priority
 | 
|---|
| 25 |  N XMK,XMKZ,XMZ,XMCNT,XMABORT,XMLEN,XMFIRST,XMPAGE,XMDETAIL,XMPMAX,XMKALL,XMIA,XMZOOM,XMMORE,XMCD,XMOPT,XMOX
 | 
|---|
| 26 |  S XMIA=1 ; Interactive
 | 
|---|
| 27 |  I '$D(^XMB(3.7,XMDUZ,XMTYPE)) D  Q
 | 
|---|
| 28 |  . W !!,$$EZBLD^DIALOG($S(XMTYPE="N":34018,1:34017)) ; You have no new (priority) messages.
 | 
|---|
| 29 |  K ^TMP("XM",$J,"MSG"),^TMP("XM",$J,".")
 | 
|---|
| 30 |  S (XMKZ,XMZ)="",(XMPAGE,XMCNT,XMZOOM,XMCD,XMABORT)=0,(XMK,XMDETAIL,XMMORE,XMKALL)=1
 | 
|---|
| 31 |  S XMPMAX=IOSL-3
 | 
|---|
| 32 |  D SETOPT^XMJMLR1(XMDUZ,0,.XMOPT,.XMOX)
 | 
|---|
| 33 |  D INIT(XMDUZ,XMTYPE,XMDETAIL,0,.XMLEN)
 | 
|---|
| 34 |  F  D  Q:XMABORT
 | 
|---|
| 35 |  . I XMCD S XMCD=0,XMDETAIL='XMDETAIL D INIT(XMDUZ,XMTYPE,XMDETAIL,0,.XMLEN)
 | 
|---|
| 36 |  . D DISPLAY(XMDUZ,XMKALL,XMTYPE,XMDETAIL,.XMK,"",.XMKZ,.XMZ,.XMCNT,.XMFIRST,.XMPAGE,.XMMORE,.XMLEN,XMZOOM,XMPMAX)
 | 
|---|
| 37 |  . D CHOOSE(XMDUZ,XMKALL,0,.XMKZ,.XMFIRST,.XMPAGE,XMMORE,.XMLEN,.XMZOOM,.XMOPT,.XMOX,"READMSG",.XMABORT)
 | 
|---|
| 38 |  . S:'$D(^XMB(3.7,XMDUZ,XMTYPE)) XMABORT=1
 | 
|---|
| 39 |  K ^TMP("XM",$J,"MSG"),^TMP("XM",$J,".")
 | 
|---|
| 40 |  Q
 | 
|---|
| 41 | INIT(XMDUZ,XMTYPE,XMDETAIL,XMACTUAL,XMLEN) ;
 | 
|---|
| 42 |  ; XMACTUAL 1/0=do/do not use actual XMKZ
 | 
|---|
| 43 |  N XMK,XMKN,XMKNMAX,XMKZL
 | 
|---|
| 44 |  S XMLEN("XMKZ")=$S(XMACTUAL:0,1:$L($P(^XMB(3.7,XMDUZ,0),U,6)))
 | 
|---|
| 45 |  S XMK=0,XMKNMAX=""
 | 
|---|
| 46 |  F  S XMK=$O(^XMB(3.7,XMDUZ,XMTYPE,XMK)) Q:XMK=""  D
 | 
|---|
| 47 |  . S XMKN=$P(^XMB(3.7,XMDUZ,2,XMK,0),U,1)
 | 
|---|
| 48 |  . S:$L(XMKN)>$L(XMKNMAX) XMKNMAX=XMKN
 | 
|---|
| 49 |  . Q:'XMACTUAL
 | 
|---|
| 50 |  . S XMKZL=$L($O(^XMB(3.7,XMDUZ,2,XMK,1,"C",""),-1))
 | 
|---|
| 51 |  . S:XMKZL>XMLEN("XMKZ") XMLEN("XMKZ")=XMKZL
 | 
|---|
| 52 |  D INIT^XMJML(XMDUZ,"",XMKNMAX,XMDETAIL,.XMLEN)
 | 
|---|
| 53 |  Q
 | 
|---|
| 54 | DISPLAY(XMDUZ,XMKALL,XMTYPE,XMDETAIL,XMK,XMKN,XMKZ,XMZ,XMCNT,XMFIRST,XMPAGE,XMMORE,XMLEN,XMZOOM,XMPMAX) ;
 | 
|---|
| 55 |  N XMREC,XMHDLINE
 | 
|---|
| 56 |  S XMFIRST(XMPAGE)=XMKZ
 | 
|---|
| 57 |  S XMHDLINE=$$HEADLINE(XMDUZ,XMKALL,XMK,XMKN,XMTYPE)
 | 
|---|
| 58 |  D HEADER^XMJML(XMDETAIL,.XMLEN,XMHDLINE)
 | 
|---|
| 59 |  I XMZOOM D  Q
 | 
|---|
| 60 |  . F  S XMKZ=$O(^TMP("XM",$J,".",XMKZ)) Q:XMKZ=""  D  Q:$Y>XMPMAX
 | 
|---|
| 61 |  . . S XMREC=^TMP("XM",$J,"MSG",XMKZ)
 | 
|---|
| 62 |  . . D LISTMSG^XMJML($P(XMREC,U,1),$P(XMREC,U,2),XMKZ,$P(XMREC,U,3),XMDETAIL,.XMLEN)
 | 
|---|
| 63 |  F  S XMKZ=$O(^TMP("XM",$J,"MSG",XMKZ)) Q:XMKZ=""  D  Q:$Y>XMPMAX
 | 
|---|
| 64 |  . S XMREC=^TMP("XM",$J,"MSG",XMKZ)
 | 
|---|
| 65 |  . D LISTMSG^XMJML($P(XMREC,U,1),$P(XMREC,U,2),XMKZ,$P(XMREC,U,3),XMDETAIL,.XMLEN)
 | 
|---|
| 66 |  Q:$Y>XMPMAX!'XMMORE
 | 
|---|
| 67 |  I XMKALL D
 | 
|---|
| 68 |  . S XMK=XMK-.01
 | 
|---|
| 69 |  . F  S XMK=$O(^XMB(3.7,XMDUZ,XMTYPE,XMK)) Q:XMK=""  D  Q:$Y>XMPMAX
 | 
|---|
| 70 |  . . S XMKN=$P(^XMB(3.7,XMDUZ,2,XMK,0),U)
 | 
|---|
| 71 |  . . D LISTBSKT(XMDUZ,XMTYPE,XMDETAIL,XMK,XMKN,.XMZ,.XMCNT,.XMLEN,XMPMAX)
 | 
|---|
| 72 |  . S XMMORE=$S('XMK:0,$O(^XMB(3.7,XMDUZ,XMTYPE,XMK)):1,XMZ="":0,$O(^XMB(3.7,XMDUZ,XMTYPE,XMK,XMZ),XMV("ORDER")):1,1:0)
 | 
|---|
| 73 |  E  D
 | 
|---|
| 74 |  . D LISTBSKT(XMDUZ,XMTYPE,XMDETAIL,XMK,XMKN,.XMZ,.XMCNT,.XMLEN,XMPMAX)
 | 
|---|
| 75 |  . S XMMORE=$S(XMZ="":0,$O(^XMB(3.7,XMDUZ,XMTYPE,XMK,XMZ),XMV("ORDER")):1,1:0)
 | 
|---|
| 76 |  S XMKZ=XMCNT
 | 
|---|
| 77 |  Q
 | 
|---|
| 78 | HEADLINE(XMDUZ,XMKALL,XMK,XMKN,XMTYPE) ;
 | 
|---|
| 79 |  N XMDIALOG,XMPARM
 | 
|---|
| 80 |  I XMTYPE="N0" D
 | 
|---|
| 81 |  . I XMKALL S XMDIALOG=34022,XMPARM(1)=$P(^XMB(3.7,XMDUZ,0),U,6) Q
 | 
|---|
| 82 |  . S XMDIALOG=34024,XMPARM(1)=$P(^XMB(3.7,XMDUZ,2,XMK,0),U,2),XMPARM(3)=XMKN
 | 
|---|
| 83 |  E  D
 | 
|---|
| 84 |  . I XMKALL S XMDIALOG=34023,XMPARM(2)=$$TPMSGCT^XMXUTIL(XMDUZ) Q
 | 
|---|
| 85 |  . S XMDIALOG=34024,XMPARM(2)=$$BPMSGCT^XMXUTIL(XMDUZ,XMK),XMPARM(3)=XMKN
 | 
|---|
| 86 |  Q $$EZBLD^DIALOG(XMDIALOG,.XMPARM)
 | 
|---|
| 87 | LISTBSKT(XMDUZ,XMTYPE,XMDETAIL,XMK,XMKN,XMZ,XMCNT,XMLEN,XMPMAX) ;
 | 
|---|
| 88 |  F  S XMZ=$O(^XMB(3.7,XMDUZ,XMTYPE,XMK,XMZ),XMV("ORDER")) Q:XMZ=""  D  Q:$Y>XMPMAX
 | 
|---|
| 89 |  . I '$D(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0)) D ADDITN^XMUT4A(XMDUZ,XMTYPE,XMK,XMZ)
 | 
|---|
| 90 |  . I '$D(^XMB(3.9,XMZ,0)) D ZAPIT^XMXMSGS2(XMDUZ,XMK,XMZ) Q
 | 
|---|
| 91 |  . S XMCNT=XMCNT+1
 | 
|---|
| 92 |  . S ^TMP("XM",$J,"MSG",XMCNT)=XMK_U_XMKN_U_XMZ
 | 
|---|
| 93 |  . D LISTMSG^XMJML(XMK,XMKN,XMCNT,XMZ,XMDETAIL,.XMLEN)
 | 
|---|
| 94 |  Q
 | 
|---|
| 95 | CHOOSE(XMDUZ,XMKALL,XMK,XMKZ,XMFIRST,XMPAGE,XMMORE,XMLEN,XMZOOM,XMOPT,XMOX,XMREAD,XMABORT) ;
 | 
|---|
| 96 |  N XMY,XMHI,XMLO
 | 
|---|
| 97 |  I XMZOOM D
 | 
|---|
| 98 |  . S XMMORE=$S(XMKZ="":0,1:1)
 | 
|---|
| 99 |  E  I $O(XMFIRST(XMPAGE)),XMKZ,$O(^TMP("XM",$J,"MSG",XMKZ)) D
 | 
|---|
| 100 |  . S XMMORE=1
 | 
|---|
| 101 |  . S XMFIRST(XMPAGE+1)=XMKZ
 | 
|---|
| 102 |  S XMLO=$O(^TMP("XM",$J,"MSG",""))
 | 
|---|
| 103 |  S XMHI=$O(^TMP("XM",$J,"MSG",""),-1)
 | 
|---|
| 104 |  D XMDIR^XMJMLR1(XMDUZ,XMLO,XMHI,XMPAGE,XMMORE,"XM-U-BO-FULL SCREEN LIST","",.XMOPT,.XMOX,.XMY,.XMABORT) Q:XMABORT
 | 
|---|
| 105 |  I '$D(XMY) S XMKZ=XMFIRST(XMPAGE) Q
 | 
|---|
| 106 |  I XMY=""!($E(XMY)="+") D  Q  ; Next page
 | 
|---|
| 107 |  . I XMMORE S XMPAGE=XMPAGE+1 Q
 | 
|---|
| 108 |  . I XMPAGE=0 S XMABORT=1 Q
 | 
|---|
| 109 |  . D AGAIN^XMJMLR(.XMABORT) Q:XMABORT
 | 
|---|
| 110 |  . S XMPAGE=0
 | 
|---|
| 111 |  . S XMKZ=XMFIRST(XMPAGE)
 | 
|---|
| 112 |  I $E(XMY)="." D  Q  ; (De)Select messages
 | 
|---|
| 113 |  . D DODOT
 | 
|---|
| 114 |  . I XMZOOM,'$D(^TMP("XM",$J,".")) D Z
 | 
|---|
| 115 |  . S XMKZ=XMFIRST(XMPAGE)
 | 
|---|
| 116 |  I XMY>0 D  Q
 | 
|---|
| 117 |  . N XMREC
 | 
|---|
| 118 |  . S XMREC=$G(^TMP("XM",$J,"MSG",XMY))
 | 
|---|
| 119 |  . I XMREC="" D
 | 
|---|
| 120 |  . . W $C(7)
 | 
|---|
| 121 |  . E  D
 | 
|---|
| 122 |  . . N XMKZ
 | 
|---|
| 123 |  . . S XMKZ=XMY
 | 
|---|
| 124 |  . . D @XMREAD
 | 
|---|
| 125 |  . . I XMZOOM,'$D(^TMP("XM",$J,".")) D Z
 | 
|---|
| 126 |  . S XMKZ=XMFIRST(XMPAGE)
 | 
|---|
| 127 |  I XMY=0 D  Q  ; First page
 | 
|---|
| 128 |  . S XMPAGE=0
 | 
|---|
| 129 |  . S XMKZ=XMFIRST(XMPAGE)
 | 
|---|
| 130 |  I $E(XMY)="-" D  Q  ; Previous page
 | 
|---|
| 131 |  . S:XMPAGE>0 XMPAGE=XMPAGE-1
 | 
|---|
| 132 |  . S XMKZ=XMFIRST(XMPAGE)
 | 
|---|
| 133 |  D @XMY
 | 
|---|
| 134 |  S XMKZ=XMFIRST(XMPAGE)
 | 
|---|
| 135 |  Q
 | 
|---|
| 136 | READMSG ; (XMDUZ,XMKZ,XMREC,XMTYPE) <- needed!
 | 
|---|
| 137 |  N XMK,XMKN,XMZ
 | 
|---|
| 138 |  S XMK=$P(XMREC,U,1),XMKN=$P(XMREC,U,2),XMZ=$P(XMREC,U,3)
 | 
|---|
| 139 |  I XMDUZ'=DUZ,'$$SURRACC^XMXSEC(XMDUZ,"",XMZ,$G(^XMB(3.9,XMZ,0))) D  Q  ; "read"
 | 
|---|
| 140 |  . D SHOW^XMJERR
 | 
|---|
| 141 |  . D WAIT^XMXUTIL
 | 
|---|
| 142 |  D READNEW^XMJBN(XMDUZ,XMK,XMKN,XMZ)
 | 
|---|
| 143 |  Q:$D(^XMB(3.7,XMDUZ,XMTYPE,XMK,XMZ))
 | 
|---|
| 144 |  K ^TMP("XM",$J,"MSG",XMKZ)
 | 
|---|
| 145 |  K:$D(^TMP("XM",$J,".",XMKZ)) ^TMP("XM",$J,".",XMKZ)
 | 
|---|
| 146 |  Q
 | 
|---|
| 147 | DODOT ;
 | 
|---|
| 148 |  N I,XMSTRIKE,XM1,XMN,XMKZ
 | 
|---|
| 149 |  I $E(XMY,2)="-" S XMSTRIKE=1,XMY=$E(XMY,3,999)
 | 
|---|
| 150 |  E  S XMSTRIKE=0,XMY=$E(XMY,2,999)
 | 
|---|
| 151 |  I XMY="*" D  Q
 | 
|---|
| 152 |  . I XMSTRIKE K ^TMP("XM",$J,".") Q
 | 
|---|
| 153 |  . S XMKZ=""
 | 
|---|
| 154 |  . F  S XMKZ=$O(^TMP("XM",$J,"MSG",XMKZ)) Q:'XMKZ  S ^TMP("XM",$J,".",XMKZ)=""
 | 
|---|
| 155 |  F I=1:1:$L(XMY,",") D
 | 
|---|
| 156 |  . S XMKZ=$P(XMY,",",I)
 | 
|---|
| 157 |  . I XMKZ["-" D  Q
 | 
|---|
| 158 |  . . S XM1=$P(XMKZ,"-")
 | 
|---|
| 159 |  . . S XMN=$P(XMKZ,"-",2) S:XMN="" XMN=XMHI
 | 
|---|
| 160 |  . . S XMKZ=XM1-.1
 | 
|---|
| 161 |  . . I 'XMSTRIKE D  Q
 | 
|---|
| 162 |  . . . F  S XMKZ=$O(^TMP("XM",$J,"MSG",XMKZ)) Q:XMKZ>XMN!'XMKZ  D
 | 
|---|
| 163 |  . . . . S:'$D(^TMP("XM",$J,".",XMKZ)) ^TMP("XM",$J,".",XMKZ)=""
 | 
|---|
| 164 |  . . F  S XMKZ=$O(^TMP("XM",$J,".",XMKZ)) Q:XMKZ>XMN!'XMKZ  K ^TMP("XM",$J,".",XMKZ)
 | 
|---|
| 165 |  . I 'XMSTRIKE D  Q
 | 
|---|
| 166 |  . . I $D(^TMP("XM",$J,"MSG",XMKZ)),'$D(^TMP("XM",$J,".",XMKZ)) S ^TMP("XM",$J,".",XMKZ)=""
 | 
|---|
| 167 |  . I $D(^TMP("XM",$J,".",XMKZ)) K ^TMP("XM",$J,".",XMKZ)
 | 
|---|
| 168 |  Q
 | 
|---|
| 169 | CD ; Change Detail
 | 
|---|
| 170 |  S XMCD=1
 | 
|---|
| 171 |  Q
 | 
|---|
| 172 | D ; Delete messages
 | 
|---|
| 173 |  D DELETE^XMJMORX(XMDUZ,XMKALL,XMK)
 | 
|---|
| 174 |  D WAIT^XMXUTIL
 | 
|---|
| 175 |  I XMZOOM,'$D(^TMP("XM",$J,".")) D Z
 | 
|---|
| 176 |  Q
 | 
|---|
| 177 | F ; Forward messages
 | 
|---|
| 178 |  D FORWARD^XMJMORX(XMDUZ,XMKALL,XMK)
 | 
|---|
| 179 |  D WAIT^XMXUTIL
 | 
|---|
| 180 |  Q
 | 
|---|
| 181 | FI ; Filter messages
 | 
|---|
| 182 |  D FILTER^XMJMORX(XMDUZ,XMKALL,XMK)
 | 
|---|
| 183 |  D WAIT^XMXUTIL
 | 
|---|
| 184 |  Q
 | 
|---|
| 185 | H ; Headerless Print messages
 | 
|---|
| 186 |  D PRINT^XMJMORX(XMDUZ,0)
 | 
|---|
| 187 |  D WAIT^XMXUTIL
 | 
|---|
| 188 |  Q
 | 
|---|
| 189 | L ; Later messages
 | 
|---|
| 190 |  D LATER^XMJMORX(XMDUZ,XMKALL,XMK)
 | 
|---|
| 191 |  D WAIT^XMXUTIL
 | 
|---|
| 192 |  Q
 | 
|---|
| 193 | NT ; New Toggle messages
 | 
|---|
| 194 |  D NEWTOGL^XMJMORX(XMDUZ,XMKALL,XMK)
 | 
|---|
| 195 |  D WAIT^XMXUTIL
 | 
|---|
| 196 |  Q
 | 
|---|
| 197 | O ; Opposite toggle
 | 
|---|
| 198 |  N XMKZ
 | 
|---|
| 199 |  S XMKZ=0
 | 
|---|
| 200 |  F  S XMKZ=$O(^TMP("XM",$J,"MSG",XMKZ)) Q:'XMKZ  D
 | 
|---|
| 201 |  . I $D(^TMP("XM",$J,".",XMKZ)) K ^TMP("XM",$J,".",XMKZ) Q
 | 
|---|
| 202 |  . S ^TMP("XM",$J,".",XMKZ)=""
 | 
|---|
| 203 |  S XMPAGE=0
 | 
|---|
| 204 |  Q
 | 
|---|
| 205 | P ; Print messages
 | 
|---|
| 206 |  D PRINT^XMJMORX(XMDUZ,1)
 | 
|---|
| 207 |  D WAIT^XMXUTIL
 | 
|---|
| 208 |  Q
 | 
|---|
| 209 | S ; Save messages
 | 
|---|
| 210 |  D SAVE^XMJMORX(XMDUZ,XMKALL,XMK)
 | 
|---|
| 211 |  D WAIT^XMXUTIL
 | 
|---|
| 212 |  I XMZOOM,'$D(^TMP("XM",$J,".")) D Z
 | 
|---|
| 213 |  Q
 | 
|---|
| 214 | T ; Terminate messages
 | 
|---|
| 215 |  D TERM^XMJMORX(XMDUZ,XMKALL,XMK)
 | 
|---|
| 216 |  D WAIT^XMXUTIL
 | 
|---|
| 217 |  I XMZOOM,'$D(^TMP("XM",$J,".")) D Z
 | 
|---|
| 218 |  Q
 | 
|---|
| 219 | V ; Vaporize messages
 | 
|---|
| 220 |  D VAPOR^XMJMORX(XMDUZ,XMKALL,XMK)
 | 
|---|
| 221 |  D WAIT^XMXUTIL
 | 
|---|
| 222 |  Q
 | 
|---|
| 223 | X ; Xmit Priority Toggle messages (for Postmaster only)
 | 
|---|
| 224 |  D XMTPRI^XMJMOR(XMDUZ,XMK)
 | 
|---|
| 225 |  D WAIT^XMXUTIL
 | 
|---|
| 226 |  Q
 | 
|---|
| 227 | Z ; Zoom toggle
 | 
|---|
| 228 |  N I
 | 
|---|
| 229 |  I XMZOOM D
 | 
|---|
| 230 |  . S XMZOOM=0
 | 
|---|
| 231 |  . S I=""
 | 
|---|
| 232 |  . F  S I=$O(XMFIRST(0,I)) Q:I=""  S XMFIRST(I)=XMFIRST(0,I)
 | 
|---|
| 233 |  . S XMPAGE=XMPAGE(0)
 | 
|---|
| 234 |  E  D
 | 
|---|
| 235 |  . S XMZOOM=1
 | 
|---|
| 236 |  . S I=""
 | 
|---|
| 237 |  . F  S I=$O(XMFIRST(I)) Q:I=""  S XMFIRST(0,I)=XMFIRST(I)
 | 
|---|
| 238 |  . S XMPAGE(0)=XMPAGE
 | 
|---|
| 239 |  . S XMPAGE=0
 | 
|---|
| 240 |  Q
 | 
|---|