MAGDRPCE ;WOIFO/PMK - Imaging RPCs ; Dec 06, 2021@10:54:46
 ;;3.0;IMAGING;**305**;Mar 19, 2002;Build 3
 ;; Per VHA Directive 2004-038, this routine should not be modified.
 ;; +---------------------------------------------------------------+
 ;; | Property of the US Government.                                |
 ;; | No permission to copy or redistribute this software is given. |
 ;; | Use of unreleased versions of this software requires the user |
 ;; | to execute a written test agreement with the VistA Imaging    |
 ;; | Development Office of the Department of Veterans Affairs,     |
 ;; | telephone (301) 734-0100.                                     |
 ;; | The Food and Drug Administration classifies this software as  |
 ;; | a medical device.  As such, it may not be changed in any way. |
 ;; | Modifications to this software may result in an adulterated   |
 ;; | medical device under 21CFR820, the use of which is considered |
 ;; | to be a violation of US Federal Statutes.                     |
 ;; +---------------------------------------------------------------+
 ;;
 Q
 ;
 ; Called by SERVICES^MAGDIWBG to get the DICOM-enabled consult services
 ;
SERVICES(OUT) ; RPC = MAG DICOM GET CON SERVICES
 N ALPHA,NOUT,SERVICE,SERVICENAME
 K OUT
 S SERVICE="" ; alpha sort services
 F  S SERVICE=$O(^MAG(2006.5831,"B",SERVICE)) Q:'SERVICE  D
 . S SERVICENAME=$$GET1^DIQ(123.5,SERVICE,.01,"E")
 . S ALPHA(SERVICENAME)=SERVICE
 . Q
 S SERVICENAME="" ; put sorted services into OUT
 F NOUT=1:1 S SERVICENAME=$O(ALPHA(SERVICENAME)) Q:SERVICENAME=""  D
 . S SERVICE=ALPHA(SERVICENAME)
 . S OUT(NOUT)=SERVICENAME_"^"_SERVICE
 . Q
 I '$D(OUT(1)) S OUT(1)=NOUT-1 ; allow error messages to be passed back in OUT(1)
 Q
 ;
GMRCDATE(OUT,SORTORDER,SERVICE,STATUS,DATE,GMRCIEN) ; RPC = MAG DICOM GET CON BY DATE
 N DIRECTION,SERVICES
 K OUT
 I '$D(SORTORDER) S OUT="-1,SORTORDER required" Q
 I SORTORDER="ASCENDING" S DIRECTION=1
 E  I SORTORDER="DESCENDING" S DIRECTION=-1
 E  S OUT="-2,SORTORDER must be either ASCENDING or DESCENDING, not """_SORTORDER_"""" Q
 I '$D(SERVICE) S OUT="-3,SERVICE required" Q
 ; STATUS=2 for COMPLETE, 5=PENDING, 6=ACTIVE, 8=SCHEDULED, STATUS=9 for PARTIAL RESULTS
 I '$D(STATUS) S OUT="-4,STATUS (2, 5, 6, 8 or 9) required" Q
 I STATUS'=2,STATUS'=5,STATUS'=6,STATUS'=8,STATUS'=9 D  Q
 . S OUT="-5,STATUS (2, 5, 6, 8 or 9) required, not """_STATUS_""""
 . Q 
 I '$D(DATE) S OUT="-6,DATE required (may be null)" Q
 I DATE S DATE=$$DATEGMRC(DATE) ; convert to reverse date
 I '$D(GMRCIEN) D  Q
 . S DATE=$O(^GMR(123,"AE",SERVICE,STATUS,DATE),-DIRECTION) ; reverse date
 . S OUT=$$DATEGMRC(DATE) ; convert back to regular Fileman date
 . Q
 F  S GMRCIEN=$O(^GMR(123,"AE",SERVICE,STATUS,DATE,GMRCIEN)) Q:GMRCIEN=""  D  Q:OUT  ; normal direction
 . S SERVICES(SERVICE)=1
 . S OUT=$$CHKIMAGE(GMRCIEN,.SERVICES) ; only return consults with images
 . Q
 S OUT=GMRCIEN
 Q
 ;
GMRCPAT(OUT,SORTORDER,DFN,DATE,GMRCIEN,SERVICES) ; RPC = MAG DICOM GET CON BY PATIENT
 N DIRECTION
 K OUT
 I '$D(SORTORDER) S OUT="-1,SORTORDER required" Q
 I SORTORDER="ASCENDING" S DIRECTION=1
 E  I SORTORDER="DESCENDING" S DIRECTION=-1
 E  S OUT="-2,SORTORDER must be either ASCENDING or DESCENDING, not """_SORTORDER_"""" Q
 I '$G(DFN) S OUT="-3,DFN required and may not be null" Q
 I '$D(DATE) S OUT="-4,DATE required and may not be null" Q
 ;
 I DATE=0 S DATE=""
 E  S DATE=$$DATEGMRC(DATE) ; convert to reverse date
 ;
 I '$D(GMRCIEN) D  ; $O DATE
 . S OUT=$O(^GMR(123,"AD",DFN,DATE),-DIRECTION) ; reverse date
 . I OUT S OUT=$$DATEGMRC(OUT) ; convert back to regular Fileman date
 . Q
 E  D  ; $O GMRCIEN to find next consult for the service for this patient
 . N HIT,TOSERVICE
 . I '$D(SERVICES) S OUT="-4,SERVICES is required" Q
 . I GMRCIEN=0 S GMRCIEN=""
 . S HIT=0
 . F  S GMRCIEN=$O(^GMR(123,"AD",DFN,DATE,GMRCIEN),DIRECTION) Q:'GMRCIEN  D  Q:HIT
 . . S TOSERVICE=$$GET1^DIQ(123,GMRCIEN,1,"I")
 . . I $D(SERVICES(+TOSERVICE)) S HIT=1 ; found a consult for a requested TO SERVICE
 . . S HIT=$$CHKIMAGE(GMRCIEN,.SERVICES)
 . . Q
 . S OUT=GMRCIEN
 . Q
 Q
 ;
GMRCIEN(OUT,DIRECTION,GMRCIEN,SERVICES) ; RPC = MAG DICOM GET CON BY GMRCIEN
 K OUT
 I '$D(DIRECTION) S OUT="-1,DIRECTION required" Q
 I DIRECTION="ASCENDING" S DIRECTION=1
 E  I DIRECTION="DESCENDING" S DIRECTION=-1
 E  S OUT="-2,DIRECTION must be either ASCENDING or DESCENDING, not """_DIRECTION_"""" Q
 I '$D(GMRCIEN) S OUT="-3,GMRCIEN is required (may be null)" Q
 I '$D(SERVICES) S OUT="-4,SERVICES is required" Q
 ; find the next consult/procedure for the services
 S OUT=0
 F  S GMRCIEN=$O(^GMR(123,GMRCIEN),DIRECTION)  Q:'GMRCIEN  D  Q:OUT
 . S OUT=$$CHKIMAGE(GMRCIEN,.SERVICES)
 . Q
 Q
 ;
DATEGMRC(GMRCDATE) ; convert a GMRC date to a FM date and vice versa
 Q 9999999.999999-GMRCDATE ; unlike radiology which uses 9999999.9999
 ;
CHKIMAGE(GMRCIEN,SERVICES) ; check to see if there are images
 N HIT,STATUS,TIUIEN,TOSERVICE
 S HIT=0
 ;
 ; STATUS=2 for COMPLETE, 5=PENDING, 6=ACTIVE, 8=SCHEDULED, STATUS=9 for PARTIAL RESULTS
 S STATUS=$$GET1^DIQ(123,GMRCIEN,8,"I")
 I STATUS'=2,STATUS'=5,STATUS'=6,STATUS'=8,STATUS'=9 Q HIT
 ;
 S TOSERVICE=$$GET1^DIQ(123,GMRCIEN,1,"I")
 I $D(SERVICES(+TOSERVICE)) D  ; consult has a requested TO SERVICE
 . ; images can be assocated with the TIU External Data file (#8925.91),
 . ; or DICOM GMRC TEMP LIST file (#2006.5839), or stored in the new
 . ; SOP Class database IMAGE STUDY file (#2005.62) -- check all three
 . S TIUIEN=$$GET1^DIQ(123,GMRCIEN,16,"I")
 . I TIUIEN,$D(^TIU(8925.91,"B",TIUIEN)) S HIT=GMRCIEN
 . I $D(^MAG(2006.5839,"C",123,GMRCIEN)) S HIT=GMRCIEN
 . I $D(^MAGV(2005.62,"D",$$GMRCACN^MAGDFCNV(GMRCIEN))) S HIT=GMRCIEN
 Q HIT
 ;
GMRCDATA(OUT,GMRCIEN,FIELD,FORMAT) ; RPC = MAG DICOM GET CON DATA
 I '$D(GMRCIEN) S OUT="-1,GMRCIEN required" Q
 I '$D(FIELD) S OUT="-2,FIELD required" Q
 I $G(FORMAT)="" S FORMAT="E"
 S OUT=$$GET1^DIQ(123,GMRCIEN,FIELD,FORMAT)
 Q
 ;
 ;
GMRCMAG(OUT,GMRCIEN) ; RPC = MAG DICOM GET CON IMAGES
 ; return the image groups, if there are any
 N I,MAG20065839IEN,MAGIEN,TIU892591IEN,MAG20065839ZERO,TIU892591ZERO,TIUIEN,RETURN
 K OUT S I=1
 S TIUIEN=$$GET1^DIQ(123,GMRCIEN,16,"I")
 I TIUIEN,$D(^TIU(8925.91,"B",TIUIEN)) D
 . S TIU892591IEN=""
 . F  S TIU892591IEN=$O(^TIU(8925.91,"B",TIUIEN,TIU892591IEN)) Q:TIU892591IEN=""  D
 . . S TIU892591ZERO=$G(^TIU(8925.91,TIU892591IEN,0))
 . . S MAGIEN=$P(TIU892591ZERO,"^",2)
 . . S I=I+1,OUT(I)=MAGIEN
 . . Q
 . Q
 I $D(^MAG(2006.5839,"C",123,GMRCIEN)) D
 . S MAG20065839IEN=""
 . F  S MAG20065839IEN=$O(^MAG(2006.5839,"C",123,GMRCIEN,MAG20065839IEN)) Q:MAG20065839IEN=""  D
 . . S MAG20065839ZERO=$G(^MAG(2006.5839,MAG20065839IEN,0))
 . . S MAGIEN=$P(MAG20065839ZERO,"^",3)
 . . S I=I+1,OUT(I)=MAGIEN
 . . Q
 . Q
 I $D(^MAGV(2005.62,"D",$$GMRCACN^MAGDFCNV(GMRCIEN))) D
 . S I=I+1,OUT(I)="New SOP Class DB"
 . Q
 S OUT(1)=I-1
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HMAGDRPCE   6991     printed  Sep 23, 2025@19:37:45                                                                                                                                                                                                    Page 2
MAGDRPCE  ;WOIFO/PMK - Imaging RPCs ; Dec 06, 2021@10:54:46
 +1       ;;3.0;IMAGING;**305**;Mar 19, 2002;Build 3
 +2       ;; Per VHA Directive 2004-038, this routine should not be modified.
 +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      ;; | The Food and Drug Administration classifies this software as  |
 +11      ;; | a medical device.  As such, it may not be changed in any way. |
 +12      ;; | Modifications to this software may result in an adulterated   |
 +13      ;; | medical device under 21CFR820, the use of which is considered |
 +14      ;; | to be a violation of US Federal Statutes.                     |
 +15      ;; +---------------------------------------------------------------+
 +16      ;;
 +17       QUIT 
 +18      ;
 +19      ; Called by SERVICES^MAGDIWBG to get the DICOM-enabled consult services
 +20      ;
SERVICES(OUT) ; RPC = MAG DICOM GET CON SERVICES
 +1        NEW ALPHA,NOUT,SERVICE,SERVICENAME
 +2        KILL OUT
 +3       ; alpha sort services
           SET SERVICE=""
 +4        FOR 
               SET SERVICE=$ORDER(^MAG(2006.5831,"B",SERVICE))
               if 'SERVICE
                   QUIT 
               Begin DoDot:1
 +5                SET SERVICENAME=$$GET1^DIQ(123.5,SERVICE,.01,"E")
 +6                SET ALPHA(SERVICENAME)=SERVICE
 +7                QUIT 
               End DoDot:1
 +8       ; put sorted services into OUT
           SET SERVICENAME=""
 +9        FOR NOUT=1:1
               SET SERVICENAME=$ORDER(ALPHA(SERVICENAME))
               if SERVICENAME=""
                   QUIT 
               Begin DoDot:1
 +10               SET SERVICE=ALPHA(SERVICENAME)
 +11               SET OUT(NOUT)=SERVICENAME_"^"_SERVICE
 +12               QUIT 
               End DoDot:1
 +13      ; allow error messages to be passed back in OUT(1)
           IF '$DATA(OUT(1))
               SET OUT(1)=NOUT-1
 +14       QUIT 
 +15      ;
GMRCDATE(OUT,SORTORDER,SERVICE,STATUS,DATE,GMRCIEN) ; RPC = MAG DICOM GET CON BY DATE
 +1        NEW DIRECTION,SERVICES
 +2        KILL OUT
 +3        IF '$DATA(SORTORDER)
               SET OUT="-1,SORTORDER required"
               QUIT 
 +4        IF SORTORDER="ASCENDING"
               SET DIRECTION=1
 +5       IF '$TEST
               IF SORTORDER="DESCENDING"
                   SET DIRECTION=-1
 +6       IF '$TEST
               SET OUT="-2,SORTORDER must be either ASCENDING or DESCENDING, not """_SORTORDER_""""
               QUIT 
 +7        IF '$DATA(SERVICE)
               SET OUT="-3,SERVICE required"
               QUIT 
 +8       ; STATUS=2 for COMPLETE, 5=PENDING, 6=ACTIVE, 8=SCHEDULED, STATUS=9 for PARTIAL RESULTS
 +9        IF '$DATA(STATUS)
               SET OUT="-4,STATUS (2, 5, 6, 8 or 9) required"
               QUIT 
 +10       IF STATUS'=2
               IF STATUS'=5
                   IF STATUS'=6
                       IF STATUS'=8
                           IF STATUS'=9
                               Begin DoDot:1
 +11                               SET OUT="-5,STATUS (2, 5, 6, 8 or 9) required, not """_STATUS_""""
 +12                               QUIT 
                               End DoDot:1
                               QUIT 
 +13       IF '$DATA(DATE)
               SET OUT="-6,DATE required (may be null)"
               QUIT 
 +14      ; convert to reverse date
           IF DATE
               SET DATE=$$DATEGMRC(DATE)
 +15       IF '$DATA(GMRCIEN)
               Begin DoDot:1
 +16      ; reverse date
                   SET DATE=$ORDER(^GMR(123,"AE",SERVICE,STATUS,DATE),-DIRECTION)
 +17      ; convert back to regular Fileman date
                   SET OUT=$$DATEGMRC(DATE)
 +18               QUIT 
               End DoDot:1
               QUIT 
 +19      ; normal direction
           FOR 
               SET GMRCIEN=$ORDER(^GMR(123,"AE",SERVICE,STATUS,DATE,GMRCIEN))
               if GMRCIEN=""
                   QUIT 
               Begin DoDot:1
 +20               SET SERVICES(SERVICE)=1
 +21      ; only return consults with images
                   SET OUT=$$CHKIMAGE(GMRCIEN,.SERVICES)
 +22               QUIT 
               End DoDot:1
               if OUT
                   QUIT 
 +23       SET OUT=GMRCIEN
 +24       QUIT 
 +25      ;
GMRCPAT(OUT,SORTORDER,DFN,DATE,GMRCIEN,SERVICES) ; RPC = MAG DICOM GET CON BY PATIENT
 +1        NEW DIRECTION
 +2        KILL OUT
 +3        IF '$DATA(SORTORDER)
               SET OUT="-1,SORTORDER required"
               QUIT 
 +4        IF SORTORDER="ASCENDING"
               SET DIRECTION=1
 +5       IF '$TEST
               IF SORTORDER="DESCENDING"
                   SET DIRECTION=-1
 +6       IF '$TEST
               SET OUT="-2,SORTORDER must be either ASCENDING or DESCENDING, not """_SORTORDER_""""
               QUIT 
 +7        IF '$GET(DFN)
               SET OUT="-3,DFN required and may not be null"
               QUIT 
 +8        IF '$DATA(DATE)
               SET OUT="-4,DATE required and may not be null"
               QUIT 
 +9       ;
 +10       IF DATE=0
               SET DATE=""
 +11      ; convert to reverse date
          IF '$TEST
               SET DATE=$$DATEGMRC(DATE)
 +12      ;
 +13      ; $O DATE
           IF '$DATA(GMRCIEN)
               Begin DoDot:1
 +14      ; reverse date
                   SET OUT=$ORDER(^GMR(123,"AD",DFN,DATE),-DIRECTION)
 +15      ; convert back to regular Fileman date
                   IF OUT
                       SET OUT=$$DATEGMRC(OUT)
 +16               QUIT 
               End DoDot:1
 +17      ; $O GMRCIEN to find next consult for the service for this patient
          IF '$TEST
               Begin DoDot:1
 +18               NEW HIT,TOSERVICE
 +19               IF '$DATA(SERVICES)
                       SET OUT="-4,SERVICES is required"
                       QUIT 
 +20               IF GMRCIEN=0
                       SET GMRCIEN=""
 +21               SET HIT=0
 +22               FOR 
                       SET GMRCIEN=$ORDER(^GMR(123,"AD",DFN,DATE,GMRCIEN),DIRECTION)
                       if 'GMRCIEN
                           QUIT 
                       Begin DoDot:2
 +23                       SET TOSERVICE=$$GET1^DIQ(123,GMRCIEN,1,"I")
 +24      ; found a consult for a requested TO SERVICE
                           IF $DATA(SERVICES(+TOSERVICE))
                               SET HIT=1
 +25                       SET HIT=$$CHKIMAGE(GMRCIEN,.SERVICES)
 +26                       QUIT 
                       End DoDot:2
                       if HIT
                           QUIT 
 +27               SET OUT=GMRCIEN
 +28               QUIT 
               End DoDot:1
 +29       QUIT 
 +30      ;
GMRCIEN(OUT,DIRECTION,GMRCIEN,SERVICES) ; RPC = MAG DICOM GET CON BY GMRCIEN
 +1        KILL OUT
 +2        IF '$DATA(DIRECTION)
               SET OUT="-1,DIRECTION required"
               QUIT 
 +3        IF DIRECTION="ASCENDING"
               SET DIRECTION=1
 +4       IF '$TEST
               IF DIRECTION="DESCENDING"
                   SET DIRECTION=-1
 +5       IF '$TEST
               SET OUT="-2,DIRECTION must be either ASCENDING or DESCENDING, not """_DIRECTION_""""
               QUIT 
 +6        IF '$DATA(GMRCIEN)
               SET OUT="-3,GMRCIEN is required (may be null)"
               QUIT 
 +7        IF '$DATA(SERVICES)
               SET OUT="-4,SERVICES is required"
               QUIT 
 +8       ; find the next consult/procedure for the services
 +9        SET OUT=0
 +10       FOR 
               SET GMRCIEN=$ORDER(^GMR(123,GMRCIEN),DIRECTION)
               if 'GMRCIEN
                   QUIT 
               Begin DoDot:1
 +11               SET OUT=$$CHKIMAGE(GMRCIEN,.SERVICES)
 +12               QUIT 
               End DoDot:1
               if OUT
                   QUIT 
 +13       QUIT 
 +14      ;
DATEGMRC(GMRCDATE) ; convert a GMRC date to a FM date and vice versa
 +1       ; unlike radiology which uses 9999999.9999
           QUIT 9999999.999999-GMRCDATE
 +2       ;
CHKIMAGE(GMRCIEN,SERVICES) ; check to see if there are images
 +1        NEW HIT,STATUS,TIUIEN,TOSERVICE
 +2        SET HIT=0
 +3       ;
 +4       ; STATUS=2 for COMPLETE, 5=PENDING, 6=ACTIVE, 8=SCHEDULED, STATUS=9 for PARTIAL RESULTS
 +5        SET STATUS=$$GET1^DIQ(123,GMRCIEN,8,"I")
 +6        IF STATUS'=2
               IF STATUS'=5
                   IF STATUS'=6
                       IF STATUS'=8
                           IF STATUS'=9
                               QUIT HIT
 +7       ;
 +8        SET TOSERVICE=$$GET1^DIQ(123,GMRCIEN,1,"I")
 +9       ; consult has a requested TO SERVICE
           IF $DATA(SERVICES(+TOSERVICE))
               Begin DoDot:1
 +10      ; images can be assocated with the TIU External Data file (#8925.91),
 +11      ; or DICOM GMRC TEMP LIST file (#2006.5839), or stored in the new
 +12      ; SOP Class database IMAGE STUDY file (#2005.62) -- check all three
 +13               SET TIUIEN=$$GET1^DIQ(123,GMRCIEN,16,"I")
 +14               IF TIUIEN
                       IF $DATA(^TIU(8925.91,"B",TIUIEN))
                           SET HIT=GMRCIEN
 +15               IF $DATA(^MAG(2006.5839,"C",123,GMRCIEN))
                       SET HIT=GMRCIEN
 +16               IF $DATA(^MAGV(2005.62,"D",$$GMRCACN^MAGDFCNV(GMRCIEN)))
                       SET HIT=GMRCIEN
               End DoDot:1
 +17       QUIT HIT
 +18      ;
GMRCDATA(OUT,GMRCIEN,FIELD,FORMAT) ; RPC = MAG DICOM GET CON DATA
 +1        IF '$DATA(GMRCIEN)
               SET OUT="-1,GMRCIEN required"
               QUIT 
 +2        IF '$DATA(FIELD)
               SET OUT="-2,FIELD required"
               QUIT 
 +3        IF $GET(FORMAT)=""
               SET FORMAT="E"
 +4        SET OUT=$$GET1^DIQ(123,GMRCIEN,FIELD,FORMAT)
 +5        QUIT 
 +6       ;
 +7       ;
GMRCMAG(OUT,GMRCIEN) ; RPC = MAG DICOM GET CON IMAGES
 +1       ; return the image groups, if there are any
 +2        NEW I,MAG20065839IEN,MAGIEN,TIU892591IEN,MAG20065839ZERO,TIU892591ZERO,TIUIEN,RETURN
 +3        KILL OUT
           SET I=1
 +4        SET TIUIEN=$$GET1^DIQ(123,GMRCIEN,16,"I")
 +5        IF TIUIEN
               IF $DATA(^TIU(8925.91,"B",TIUIEN))
                   Begin DoDot:1
 +6                    SET TIU892591IEN=""
 +7                    FOR 
                           SET TIU892591IEN=$ORDER(^TIU(8925.91,"B",TIUIEN,TIU892591IEN))
                           if TIU892591IEN=""
                               QUIT 
                           Begin DoDot:2
 +8                            SET TIU892591ZERO=$GET(^TIU(8925.91,TIU892591IEN,0))
 +9                            SET MAGIEN=$PIECE(TIU892591ZERO,"^",2)
 +10                           SET I=I+1
                               SET OUT(I)=MAGIEN
 +11                           QUIT 
                           End DoDot:2
 +12                   QUIT 
                   End DoDot:1
 +13       IF $DATA(^MAG(2006.5839,"C",123,GMRCIEN))
               Begin DoDot:1
 +14               SET MAG20065839IEN=""
 +15               FOR 
                       SET MAG20065839IEN=$ORDER(^MAG(2006.5839,"C",123,GMRCIEN,MAG20065839IEN))
                       if MAG20065839IEN=""
                           QUIT 
                       Begin DoDot:2
 +16                       SET MAG20065839ZERO=$GET(^MAG(2006.5839,MAG20065839IEN,0))
 +17                       SET MAGIEN=$PIECE(MAG20065839ZERO,"^",3)
 +18                       SET I=I+1
                           SET OUT(I)=MAGIEN
 +19                       QUIT 
                       End DoDot:2
 +20               QUIT 
               End DoDot:1
 +21       IF $DATA(^MAGV(2005.62,"D",$$GMRCACN^MAGDFCNV(GMRCIEN)))
               Begin DoDot:1
 +22               SET I=I+1
                   SET OUT(I)="New SOP Class DB"
 +23               QUIT 
               End DoDot:1
 +24       SET OUT(1)=I-1
 +25       QUIT