title: run time error in perfoming saving
body: <p>Hi i need some help on this i cannot save if the user will input only 2 items and not more than 5 items.i can only save 5 items but when i input only 3 items i could not save i get run time error.maybe i have problem in looping.Thank you in advance</p>
  
  <p>I am using mscobol 2.20</p>
  
  <p>here is my code i put it back the file status</p>
  
  <pre>
               IDENTIFICATION DIVISION.
               PROGRAM-ID. SOENTRY.
               ENVIRONMENT DIVISION.
               INPUT-OUTPUT SECTION.
               FILE-CONTROL.
  
  
  
              SELECT SYSTEM-FILE
               ASSIGN TO DISK
               ORGANIZATION IS INDEXED
               ACCESS MODE IS RANDOM
               RECORD KEY IS SYS-FY
               FILE STATUS IS SYSTEM-STATUS.
  
  
  
             SELECT CUSTOMER-FILE
               ASSIGN TO DISK
               ORGANIZATION IS INDEXED
               ACCESS MODE IS RANDOM
               RECORD KEY IS CUSNO
               FILE STATUS IS CUSTOMER-STATUS.
  
  
  
             SELECT ITEM-FILE
               ASSIGN TO DISK
               ORGANIZATION IS INDEXED
               ACCESS MODE IS RANDOM
               RECORD KEY IS ITMNO
               FILE STATUS IS ITEM-STATUS.
  
  
  
             SELECT SO-FILE
               ASSIGN TO DISK
               ORGANIZATION IS INDEXED
               ACCESS MODE IS RANDOM
               RECORD KEY IS SONO
               FILE STATUS IS SO-STATUS.
  
  
  
             SELECT SOD-FILE
               ASSIGN TO DISK
               ORGANIZATION IS INDEXED
               ACCESS MODE IS RANDOM
               RECORD KEY IS SODKEY
               FILE STATUS IS SOD-STATUS.
  
  
  
  
  
         DATA DIVISION.
         FILE SECTION.
  
         FD  SYSTEM-FILE LABEL RECORD IS STANDARD
             VALUE OF FILE-ID IS "SYSTEM.DAT".
         01  SYSTEM-RECORD.
             03  SYS-FY           PIC 9(4).
             03  SYS-CONAME       PIC X(50).
             03  SYS-COADDR       PIC X(50).
             03  SYS-USER         PIC 9(10).
             03  SYS-PWORD        PIC 9(10).
             03  SYS-LASTCUSNO    PIC 9(5).
             03  SYS-LASTITMNO    PIC 9(5).
             03  SYS-LASTSONO     PIC 9(7).
             03  SYS-LASTSINO     PIC 9(7).
             03  SYS-LASTORNO     PIC 9(7).
             03  SYS-RECSTAT      PIC A.
  
         FD  CUSTOMER-FILE LABEL RECORD IS STANDARD
             VALUE OF FILE-ID IS "CUSTOMER.DAT".
         01  CUSTOMER-RECORD.
             03  CUSNO            PIC 9(5).
             03  CUSNAME          PIC X(40).
             03  CUSADDR          PIC X(40).
             03  CUSCONTACTPERSON PIC X(40).
             03  CUSCONTACTNO     PIC 9(18).
             03  CUSCREDITLIMIT   PIC 9(7)V99.
             03  CUSBALANCE       PIC S9(7)V99.
             03  CUSLASTSONO      PIC 9(7).
             03  CUSLASTSINO      PIC 9(7).
             03  CUSLASTORNO      PIC 9(7).
             03  CUSRECSTAT       PIC A.
  
         FD  ITEM-FILE LABEL RECORD IS STANDARD
             VALUE OF FILE-ID IS "ITEM.DAT".
         01  ITEM-RECORD.
             03 ITMNO                   PIC 9(5).
             03 ITMDESC                 PIC X(40).
             03 ITMUM                   PIC X(3).
             03 ITMPRICE                PIC S9(6)V99.
             03 ITMQTYONHAND            PIC 9(4).
             03 ITMQTYONORDER           PIC 9(4).
             03 ITMLASTONO              PIC 9(7).
             03 ITMLASTSINO             PIC 9(7).
             03 ITMRECSTAT              PIC X.
  
  
  
         FD  SO-FILE LABEL RECORD IS STANDARD
             VALUE OF FILE-ID IS "SO.DAT".
  
         01  SO-RECORD.
             03  SONO             PIC 9(7).
             03  SODATE           PIC 9(8).
             03  SOCUSNO          PIC 9(5).
             03  SOPAYMODE        PIC XX.
             03  SOTOTAL          PIC 9(7)V99.
             03  SOPREPBY         PIC X(30).
             03  SOAPPRBY         PIC X(30).
             03  SORECSTAT        PIC X.
  
  
         FD  SOD-FILE LABEL RECORD IS STANDARD
             VALUE OF FILE-ID IS "SOD.DAT".
         01  SOD-RECORD.
             03  SODKEY.
                 05  SODSONO      PIC 9(7).
                 05  SODITMNO     PIC 9(5).
             03  SODQTYORD        PIC 9(4).
             03  SODQTYINV        PIC 9(4).
             03  SODUPRICE        PIC 9(6)V99.
             03  SODAMOUNT        PIC 9(6)V99.
             03  SODRECSTAT       PIC X.
  
  
  
         WORKING-STORAGE SECTION.
         01  ESC-CODE        PIC 99 VALUE 0.
             88  ESC-KEY     VALUE 1.
             88  F2          VALUE 3.
             88  F10         VALUE 11.
  
         01  ERRMSG       PIC X(75) VALUE SPACES.
         01  ERR          PIC 9 VALUE 0.  
         01  TEMP-VAR VALUE ZEROES.
             03 VAR-ITMNO                PIC 9(5) OCCURS 5 TIMES.    
             03 VAR-ITMPRICE             PIC 9(6) OCCURS 5 TIMES.
             03 VAR-ITMQTYONORDER        PIC 9(4) OCCURS 5 TIMES.
             03 VAR-SODITMQTYORDER       PIC 9(4) OCCURS 5 TIMES.
             03 VAR-AMOUNT               PIC 9(6) OCCURS 5 TIMES.
  
         01  TEMP-STR VALUE SPACES.
             03 VAR-ITMDESC              PIC X(40) OCCURS 5 TIMES.
             03 VAR-ITMUM                PIC X(3) OCCURS 5 TIMES.
  
         01  QTYORD                  PIC 9(4).
         01  ROW                     PIC 9.
         01  R                       PIC 9.
  
         01  EDIT-PRICE.
             03 E-PRICE      PIC ZZZ,ZZ9.99.
  
         01  MY-DATE.
             03 MY-YEAR      PIC 9(4).
             03 MY-MONTH     PIC 9(2).
             03 MY-DAY       PIC 9(2).
  
  
         01  AMOUNT          PIC 9(6)V99.
         01  TOTAL-AMOUNT    PIC 9(7)V99.
         01  CUSTOMER.
                03 VAR-CRDLIMIT  PIC Z,ZZZ,ZZ9.99.
                03 VAR-BALANCE   PIC Z,ZZZ,ZZ9.99.
         01  EDIT-AMOUNT.
             03 E-AMOUNT     PIC ZZZ,ZZ9.99.
             03 E-TOTAL      PIC Z,ZZZ,ZZ9.99.
         01  MOD    PIC XX.
         01  FLAG   PIC 9.
         01  LBL.
             03  LBLSONO     PIC 9(7).
  
         01  APP-PREV.
             03  PREPBY          PIC  X(30).
             03  APPBY           PIC  X(30).
  
         01  VAR-ITEM.
             03  VAR-QTYONHAND    PIC 9(4).
             03  TOTAL-QTYONORDER PIC 9(4).
  
         01  CHECK-STATUS.
             03  SYSTEM-STATUS   PIC XX.
             03  CUSTOMER-STATUS PIC XX.
             03  ITEM-STATUS     PIC XX.
             03  SO-STATUS       PIC XX.
             03  SOD-STATUS      PIC XX.
  
         SCREEN SECTION.
         01  HEADER.
             03  BLANK SCREEN BACKGROUND-COLOR 0.
         01  ENTRY-FORM.
             03  LINE 1 COLUMN 31 PIC X(50) 
                 FROM SYS-CONAME HIGHLIGHT.
             03  LINE 3 COLUMN 55 VALUE "SO NO  :".
             03  LINE 4 COLUMN 55 VALUE "SO DATE:".
             03  LINE 4 COLUMN 68 VALUE "/".
             03  LINE 4 COLUMN 73 VALUE "/".
             03  LINE 4 COLUMN 2 VALUE "CUSTOMER N0:".
             03  LINE 4 COLUMN 15 PIC 9(5) USING CUSNO.          
             03  LINE 6 COLUMN 2 VALUE "NAME       :".
             03  LINE 7 COLUMN 2 VALUE "ADDRESS    :".
             03  LINE 17 COLUMN 53 VALUE "TOTAL ======> ".
             03  LINE 17 COLUMN 66 PIC Z,ZZZ,ZZ9.99 
                 FROM TOTAL-AMOUNT.
             03  LINE 19 COLUMN 2 "PREPARED BY: ".
             03  LINE 19 COLUMN 14 PIC X(30) USING SOPREPBY.    
             03  LINE 20 COLUMN 2 "APPROVED BY: ".
             03  LINE 20 COLUMN 14 PIC X(30) USING SOAPPRBY. 
             03  LINE 19 COLUMN 48 VALUE "CRDTLIMIT : ".
             03  LINE 19 COLUMN 64 PIC Z,ZZZ,ZZ9.99
                 FROM VAR-CRDLIMIT.
             03  LINE 20 COLUMN 48 VALUE "BALANCE   : ".
             03  LINE 20 COLUMN 64 PIC Z,ZZZ,ZZ9.99
                 FROM VAR-BALANCE.
  
             03  LINE 21 COLUMN 48 VALUE "ITMQTYHAND   : ".
             03  LINE 21 COLUMN 64 PIC 9(4)
                 FROM ITMQTYONHAND.
             03  LINE 6  COLUMN 55 VALUE "PAYMENT MODE:".
  
         01 CLEAR-CUSNO.
             03  LINE 4 COLUMN 15 VALUE "00000".
  
         01 CUST-PRO.
             03  LINE 6 COLUMN 15 PIC X(40)
                 FROM CUSNAME BACKGROUND-COLOR 0.
             03  LINE 7 COLUMN 15 PIC X(40)
                 FROM CUSADDR BACKGROUND-COLOR 0.            
         01 ITEM-HEADER.             
             03  LINE 9 COLUMN 2 "ITEM NO" BACKGROUND-COLOR 9.
             03  LINE 9 COLUMN 10 "     " BACKGROUND-COLOR 9.
             03  LINE 9 COLUMN 12 "     DESCRPTION   " BACKGROUND-COLOR 9.
             03  LINE 9 COLUMN 30 "          " BACKGROUND-COLOR 9.
             03  LINE 9 COLUMN 41 " UOM " BACKGROUND-COLOR 9.
             03  LINE 9 COLUMN 47 " QTY " BACKGROUND-COLOR 9.
             03  LINE 9 COLUMN 53 "  UNIT PRICE " BACKGROUND-COLOR 9.
             03  LINE 9 COLUMN 67 "  AMOUNT  " BACKGROUND-COLOR 9.
  
         01  FUNCTION-KEYS.
             03  LINE 24 COLUMN 5 "Esc" HIGHLIGHT.
             03  "=Exit  ".
             03  "F2" HIGHLIGHT.
             03  "=Save  ".
             03  "F10" HIGHLIGHT.
             03  "=Cancel".
         01  ERROR-MESSAGE.
             03  LINE 25 COLUMN 5 PIC X(70) FROM ERRMSG HIGHLIGHT.
         01  CLEAR-SCREEN.
             03  BLANK SCREEN BACKGROUND-COLOR 0.
         PROCEDURE DIVISION.
         MAIN.
             OPEN I-O SYSTEM-FILE CUSTOMER-FILE ITEM-FILE 
             SO-FILE SOD-FILE.
  
             IF SOD-STATUS not = '00'
               DISPLAY "error" SOD-STATUS
               STOP RUN.
  
             IF SOD-STATUS = '05'
               DISPLAY "error" SOD-STATUS
               STOP RUN.
  
             IF SO-STATUS = '00'
               DISPLAY "error" SO-STATUS
               STOP RUN.
  
             IF SO-STATUS = '05'
               DISPLAY "error" SO-STATUS
               STOP RUN.  
  
  
  
             MOVE 2012 TO SYS-FY.
             READ SYSTEM-FILE INVALID KEY MOVE 1 TO ERR.
             IF ERR = 1
                 DISPLAY "SYSTEM RECORD NOT FOUND."
             ELSE
                 PERFORM INITIALIZE-ITEMREC
                 DISPLAY HEADER
  
                 PERFORM ENTRY1 UNTIL ESC-KEY
                 DISPLAY CLEAR-SCREEN.           
             CLOSE SYSTEM-FILE CUSTOMER-FILE ITEM-FILE 
             SO-FILE SOD-FILE.    
  
             STOP RUN.
         ENTRY1.
  
             COMPUTE SONO = SYS-LASTSONO + 1.
             MOVE SONO TO LBLSONO.
  
             DISPLAY ENTRY-FORM ITEM-HEADER FUNCTION-KEYS ERROR-MESSAGE.
  
             DISPLAY (3 , 65) LBLSONO.
  
             MOVE 2012 TO MY-YEAR.
             DISPLAY ( 4 , 74) MY-YEAR.
  
  
  
             MOVE 1 TO FLAG.
             PERFORM ENTER-MONTH UNTIL FLAG = 0 OR ESC-KEY
             OR F2 OR F10.
  
             MOVE 1 TO FLAG.
             PERFORM ENTER-DAY UNTIL FLAG = 0 OR ESC-KEY
             OR F2 OR F10.
  
  
  
             MOVE 1 TO ERR.
             PERFORM ENTER-CUSNO UNTIL ERR = 0 OR ESC-KEY
             OR F2 OR F10.
  
             DISPLAY CUST-PRO.
             MOVE CUSCREDITLIMIT TO VAR-CRDLIMIT.
             MOVE CUSBALANCE TO VAR-BALANCE.
             DISPLAY(19 , 66) VAR-CRDLIMIT.
             DISPLAY(20 , 66) VAR-BALANCE.
  
             MOVE 1 TO ERR.
             PERFORM ENTER-PREP UNTIL ERR = 0 OR ESC-KEY.
  
             MOVE 1 TO ERR.
             PERFORM ENTER-APP UNTIL ERR = 0 OR ESC-KEY.
  
  
  
  
  
  
             MOVE 1 TO FLAG.  
             PERFORM CHCK-MOD UNTIL FLAG = 0 OR ESC-KEY.
  
  
             PERFORM ITM-INPUT.
  
  
             IF F2 PERFORM SAVE-ENTRIES
             ELSE IF F10 PERFORM CANCEL-ENTRIES. 
  
  
         ENTER-MONTH.
             ACCEPT(4 , 65)MY-MONTH.
             ACCEPT ESC-CODE FROM ESCAPE KEY.
             IF F2
                PERFORM SAVE-ENTRIES            
             ELSE IF F10
                PERFORM CANCEL-ENTRIES
  
             ELSE IF MY-MONTH  12
               MOVE "INVALID MONTH" TO ERRMSG
               DISPLAY ERROR-MESSAGE
  
             ELSE
               MOVE SPACES TO ERRMSG
               DISPLAY ERROR-MESSAGE
               MOVE 0 TO FLAG.             
  
         ENTER-DAY.
             ACCEPT(4 , 70)MY-DAY.
             ACCEPT ESC-CODE FROM ESCAPE KEY.
             IF F2
                PERFORM SAVE-ENTRIES            
             ELSE IF F10
                PERFORM CANCEL-ENTRIES           
             ELSE IF MY-DAY  31
               MOVE "INVALID DAY" TO ERRMSG
               DISPLAY ERROR-MESSAGE
  
             ELSE
               MOVE SPACES TO ERRMSG
               DISPLAY ERROR-MESSAGE         
               MOVE 0 TO FLAG.
  
  
         ENTER-CUSNO.
  
             ACCEPT (4 , 15) CUSNO.
             ACCEPT ESC-CODE FROM ESCAPE KEY.
             IF F2
                PERFORM SAVE-ENTRIES
             ELSE IF F10
                PERFORM CANCEL-ENTRIES
             ELSE IF CUSNO = ZEROES
                MOVE 1 TO ERR
             ELSE
                MOVE SPACES TO ERRMSG
                PERFORM VALIDATE-CUSNO.         
  
         VALIDATE-CUSNO.
             MOVE 0 TO ERR.   
             READ CUSTOMER-FILE INVALID KEY MOVE 1 TO ERR.
             IF ERR = 1
  
               MOVE "CUSTOMER NO. NOT FOUND" TO ERRMSG
               MOVE 1 TO ERR
               DISPLAY CLEAR-CUSNO
               DISPLAY ERROR-MESSAGE
               PERFORM CLEAN
  
             ELSE
               DISPLAY ERROR-MESSAGE.
  
  
         CHCK-MOD.
  
             ACCEPT (6 , 69) MOD.
             ACCEPT ESC-CODE FROM ESCAPE KEY.
             IF ESC-KEY
               DISPLAY CLEAR-SCREEN
               STOP RUN
             IF F2 PERFORM SAVE-ENTRIES
             ELSE IF F10 PERFORM CANCEL-ENTRIES.
  
             IF MOD  = "CA" OR "CR"
               MOVE SPACES TO ERRMSG
               DISPLAY ERROR-MESSAGE
               MOVE 0 TO FLAG
  
             ELSE
               MOVE "INVALID INPUT." TO ERRMSG
               DISPLAY ERROR-MESSAGE.
  
         ENTER-PREP.
             ACCEPT (19 , 14 ) SOPREPBY.
             ACCEPT ESC-CODE FROM ESCAPE KEY.
             IF ESC-KEY
               DISPLAY CLEAR-SCREEN
               STOP RUN 
             ELSE IF SOPREPBY = SPACES
               MOVE 1 TO ERRMSG
               MOVE "PLEASE FILL-IN" TO ERRMSG
               DISPLAY ERROR-MESSAGE
             ELSE
               MOVE SPACES TO ERRMSG
               DISPLAY ERROR-MESSAGE
               MOVE 0 TO ERR.
  
         ENTER-APP.
             ACCEPT (20 , 14 ) SOAPPRBY.
             ACCEPT ESC-CODE FROM ESCAPE KEY.
             IF ESC-KEY
               DISPLAY CLEAR-SCREEN
               STOP RUN 
             ELSE IF SOAPPRBY = SPACES
               MOVE 1 TO ERR
               MOVE "PLEASE FILL-IN" TO ERRMSG
               DISPLAY ERROR-MESSAGE
             ELSE
               MOVE SPACES TO ERRMSG
               DISPLAY ERROR-MESSAGE
               MOVE 0 TO ERR.
  
  
         ITM-INPUT.
  
             MOVE 10 TO LIN.
             MOVE 0 TO TOTAL-AMOUNT.
             MOVE 1 TO ROW.
             PERFORM ITM-INPUT1 VARYING R FROM 1 BY 1 UNTIL R > 5.
  
  
  
         ITM-INPUT1.
             MOVE 1 TO ERR.
             PERFORM ITM-INPUT2 UNTIL ERR = 0 OR F2 OR F10.    
  
         ITM-INPUT2.      
  
             ACCEPT (LIN, 4) ITMNO.
             ACCEPT ESC-CODE FROM ESCAPE KEY.
             IF ESC-KEY
               DISPLAY CLEAR-SCREEN
               STOP RUN
             ELSE IF F2
               PERFORM SAVE-ENTRIES
             ELSE IF F10
               PERFORM CANCEL-ENTRIES
  
             ELSE
  
               MOVE SPACES TO ERRMSG
               PERFORM ITM-INPUT3.
  
         ITM-INPUT3.
             MOVE 0 TO ERR               
             READ ITEM-FILE INVALID KEY MOVE 1 TO ERR.
             IF ERR = 1 
                 MOVE "ITMNO NO. NOT FOUND." TO ERRMSG
                 DISPLAY ERROR-MESSAGE
             ELSE
  
                DISPLAY ERROR-MESSAGE
                PERFORM ITM-INPUT4.
  
  
         ITM-INPUT4.
  
                DISPLAY (LIN , 10) ITMDESC
                DISPLAY (LIN , 41) ITMUM
                MOVE ITMPRICE TO E-PRICE
                DISPLAY (LIN , 52) E-PRICE
                DISPLAY (21 , 66 ) ITMQTYONHAND
  
  
                PERFORM VALIDATE-ITMQTY.
  
  
         VALIDATE-ITMQTY.
  
                ACCEPT (LIN , 48)QTYORD.
                MOVE QTYORD TO VAR-SODITMQTYORDER(R).   
                ACCEPT ESC-CODE FROM ESCAPE KEY.
  
                IF ESC-KEY
                 DISPLAY CLEAR-SCREEN
                 STOP RUN
  
                ELSE IF VAR-SODITMQTYORDER (R) > ITMQTYONHAND
                  MOVE "INSUFFICIENT STOCK" TO ERRMSG
                  DISPLAY ERROR-MESSAGE
                ELSE
                  COMPUTE AMOUNT = VAR-SODITMQTYORDER (R) * ITMPRICE
                  MOVE AMOUNT TO E-AMOUNT
                  DISPLAY (LIN , 66)E-AMOUNT
                  ADD 1 TO LIN
  
                  MOVE ITMNO TO VAR-ITMNO(R)
        *          MOVE ITMQTYONORDER TO VAR-ITMQTYONORDER(R).
                  MOVE ITMDESC TO VAR-ITMDESC(R)
                  MOVE ITMUM TO VAR-ITMUM(ROW)
  
  
                  COMPUTE TOTAL-QTYONORDER = ITMQTYONORDER + 
                  VAR-SODITMQTYORDER (ROW)
  
                  MOVE ITMPRICE TO VAR-ITMPRICE(R)
                  MOVE AMOUNT TO VAR-AMOUNT(R)
                  COMPUTE TOTAL-AMOUNT =  TOTAL-AMOUNT + AMOUNT
                  MOVE TOTAL-AMOUNT TO E-TOTAL
                  DISPLAY (17 , 66) E-TOTAL
                  COMPUTE VAR-QTYONHAND = ITMQTYONHAND 
                  - VAR-SODITMQTYORDER(R)
  
                  ADD 1 TO ROW.
         SAVE-ENTRIES.
  
             PERFORM SAVE-SOD VARYING R FROM 1 BY 1 UNTIL
             R = ROW.
  
             PERFORM SAVE-SO.
             MOVE LBLSONO TO CUSLASTSONO.
             REWRITE CUSTOMER-RECORD.
             MOVE LBLSONO TO SYS-LASTSONO.    
             REWRITE SYSTEM-RECORD.
             MOVE "ENTRIES RECORDED." TO ERRMSG.
             DISPLAY ERROR-MESSAGE.
             PERFORM INITIALIZE-ITEMREC. 
  
         SAVE-SOD.
             MOVE LBLSONO TO SODSONO.
             MOVE VAR-ITMNO(R) TO SODITMNO.
             MOVE VAR-SODITMQTYORDER(R) TO SODQTYORD.
             MOVE VAR-ITMPRICE(R) TO SODUPRICE.
             MOVE VAR-AMOUNT(R) TO SODAMOUNT.
             WRITE SOD-RECORD. 
             PERFORM SAVE-ITEM.
  
         SAVE-ITEM.
             MOVE VAR-ITMNO(R) TO SODITMNO.
             READ ITEM-FILE.
             MOVE VAR-QTYONHAND TO ITMQTYONHAND.
             MOVE TOTAL-QTYONORDER TO ITMQTYONORDER.
             MOVE LBLSONO TO ITMLASTONO.
             REWRITE ITEM-RECORD.
  
         SAVE-SO.
  
             MOVE LBLSONO TO SONO.
             MOVE MY-DATE TO SODATE.
             MOVE CUSNO TO SOCUSNO.
             MOVE TOTAL-AMOUNT TO SOTOTAL.
        *     MOVE PREPBY TO SOPREPBY. 
        *     MOVE APPBY TO SOAPPRBY.            
             MOVE "O" TO SORECSTAT.
             WRITE SO-RECORD.
  
  
         CANCEL-ENTRIES.
             MOVE "ENTRIES CANCELLED" TO ERRMSG.
             PERFORM INITIALIZE-ITEMREC.
  
         INITIALIZE-ITEMREC.
             MOVE ZEROES TO CUSTOMER-RECORD.
             MOVE ZEROES TO CUSNO ITMNO. 
             MOVE ZEROES TO CUSBALANCE CUSCREDITLIMIT.
             MOVE ZEROES TO SODAMOUNT SODUPRICE.
             MOVE ZEROES TO TOTAL-AMOUNT SORECSTAT.
             MOVE 0 TO R.
  
             MOVE SPACES TO TEMP-STR.
             MOVE SPACES TO SOPREPBY SOAPPRBY.
             MOVE "A" TO ITMRECSTAT.
             MOVE 'O' TO SODRECSTAT.
  
             MOVE SPACE TO SOPAYMODE MOD.
             MOVE ZEROES TO SODQTYINV ITMQTYONHAND.
             MOVE SPACES TO CUSNAME CUSADDR.
  
         CLEAN.
             MOVE SPACES TO CUSNAME.
             MOVE SPACES TO CUSADDR.
  
  
  
  
  
  
  </pre>
  
  <p>I did not use when like your example because i don't know how to use it.it gives me an error,when compiling.By the way sir why is that if i have file status checking my program will not be runtime and it iwll write to the so.dat and sod.dat and my sono will be generated but if i will remove the file status my program will have input output error when inputing only 3 or less than 5 items.can you please enlighten my mind.Thank you in advance.</p>