|
I am sure you could. However why not just do something like:
...
D InitSql PR
D DeclareC1 PR like(sqlstt)
D OpenC1 PR like(sqlstt)
D FetchC1 PR like(sqlstt)
D CloseC1 PR like(sqlstt)
D ErrorHandler PR
D Procedure 10a const
D SRCPFUNLCK PI *ENTRY PLIST
D SourceFile ds qualified
D File 10a
D Library 10a
D LockState 7a inz('*EXCL')
/UNDEFINE DSpec
/free
InitSql();
Select;
When DeclareC1()<>*all'0';
ErrorHandler('DeclareC1');
When OpenC1()<>*all'0';
ErrorHandler('OpenC1');
Other;
Dow FetchC1()=*all'0';
callp LockFile(SourceFile.File:SourceFile.Library:
SourceFile.LockState);
EndDo;
Select;
When SqlStt='02000';
// End of cursor (normally). Ok.
Other;
ErrorHandler('FetchC1');
EndSl;
CloseC1();
EndSl;
*inlr=*on;
return;
/end-free
/eject
P InitSql B
D InitSql PI
/free
// Traditionally SqlStt and SqlCod are not set by 'Set Option'
// or 'Declare cursor' statements
SqlStt=*all'0'; // Initially comes in as all blanks
SqlCod=*zeros; // Initially set to some ridiculously high number.
It's
// a conversion of blanks to a binary number thing.
/end-free
C/EXEC SQL
C+ Set Option
C+ Naming = *Sys,
C+ Commit = *None,
C+ UsrPrf = *User,
C+ DynUsrPrf = *User,
C+ Datfmt = *iso,
C+ CloSqlCsr = *EndMod
C/END-EXEC
/free
return;
/end-free
P InitSql E
/eject
P DeclareC1 B
D DeclareC1 PI like(sqlstt)
C/EXEC SQL
C+ Declare C1 Cursor for
C+ Select SYSTEM_TABLE_SCHEMA, SYSTEM_TABLE_NAME
C+ From QSYS2/SysTables
C+ Where file_type='S'
C+ Order by SYSTEM_TABLE_SCHEMA, SYSTEM_TABLE_NAME
C/END-EXEC
/free
// Using sqlstt as a return value on a Declare Cursor is rather
silly
// since Declare does not set it. And that's why I had to add the
// SqlStt=*all'0' in my InitSql procedure. Otherwise it was coming
up blanks.
return sqlstt;
/end-free
P DeclareC1 E
...
Rob Berendt
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.