|
> I think something is missing:
> What is :save ???
>
Save is the data structure the record read is moved to. In this example,
that
happens to be only one field, but could be many.
ISAVE DS
I 1 70WO#
the example of the STR is in the comments:
C* SELECT WO# FROM WO WHERE WOID# = 'CUS90' AND
C* WOPO# = 'XYZ1234'
So for each record read that meets the above selection, I can get the
work order number (WO#). I save the WO#'s from each record read,
and pass all of them in an array back to the calling pgm. To make it
clearer, below is a clip of the entire pgm. (again, I wrote this years
ago and might do some things diff today).
entire pgm
F*****************************************************************
F* NTOSQL3 - PROCESS SQL SEARCH AND RETURN ARRAY OF WORK ORDERS 'S
F* RETURN UP TO 100 WORK ORDERS FOR SELECTED PO#
F*
F*****************************************************************
F**
F** 02/15/98 JF WRITTEN
F*****************************************************************
E ARRAY 1 1 80 SQL STRING
E REF 100 7 ADDRESS REF#
ISAVE DS
I 1 70WO#
C* MATCH NAME
C *ENTRY PLIST
C* INPUT
C PARM ID 6 CUST ID
C PARM PO# 7 PO#
C* OUTPUT
C PARM REF ADDR REF#'S
C* INITIALIZE
C MOVE '''' QUOTE 1
C MOVE '%' PERCNT 1
C MOVE 'WOID# =' @WOID# 7 WO ID#
C MOVE 'WOPO# =' @PO# 7 PO#
C MOVE 'LIKE' @LIKE 4
C MOVE 'AND' @AND 3
C MOVE *ZEROS X 50 # OF RECS
C MOVE *BLANKS REF ADDRESS REF#
C* BUILD COMMAND STRING
C MOVEAARRAY STR 256 P CMD STRING
C MOVE *ZEROS #FLDS 30 #FIELDS USED
C* WO ID#
C* SELECT WO# FROM WO WHERE WOID# = 'XXXXXX'
C ID IFNE *BLANKS
C ADD 1 #FLDS
C CAT @WOID#:1 STR
C CAT QUOTE:1 STR
C CAT ID:0 STR
C CAT QUOTE:0 STR
C ENDIF
C* PO NUMBER
C* SELECT WO# FROM WO WHERE WOID# = 'CUS90' AND
C* WOPO# = 'XYZ1234'
C PO# IFNE *BLANKS
C ADD 1 #FLDS
C #FLDS IFGT 1
C CAT @AND:1 STR AND
C ENDIF
C CAT @PO#:1 STR AND WOPO#
C CAT QUOTE:1 STR AND WOPO# '
C CAT PO#:0 STR AND WOPO# 'X
C CAT QUOTE:0 STR
C ENDIF
C*
C/EXEC SQL WHENEVER SQLERROR GOTO $ERR
C/END-EXEC
C*
C/EXEC SQL
C+ PREPARE S1 FROM:STR
C/END-EXEC
C*
C/EXEC SQL
C+ DECLARE C1 CURSOR FOR S1
C/END-EXEC
C*
C/EXEC SQL OPEN C1
C/END-EXEC
C*
C/EXEC SQL WHENEVER NOT FOUND GOTO $DONE
C/END-EXEC
C*
C SQLCOD DOUNE0
C/EXEC SQL
C+ FETCH C1 INTO :SAVE
C/END-EXEC
C*
C* PROCESS NO MORE THAN 10 RECORDS
C ADD 1 X
C X IFGT 100
C LEAVE
C ENDIF
C MOVE WO# REF,X
C ENDDO
..... *. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7
C*
C $DONE TAG
C** MOVEAREF REF# MOVE REFS TO
C $ERR TAG
C MOVE *ON *INLR
** ARRAY
SELECT WO# FROM WO WHERE
+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.