× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Jonathan Ball wrote:

No /WAY/ is OPNQRYF more integrated into RPG than SQL. IBM
basically abandoned OPNQRYF back when it was still called the
AS/400, and with good reason. If you think in database terms,
SQL is it. Database functionality evolves almost in lockstep
with SQL.

<<SNIP>>

rob@xxxxxxxxx wrote:

You think OPNQRYF is easy?! Shudder! I got tired of counting
apostrophes and whatnot long ago. Never used OPNQRYF again
after using embedded sql.

Tom Deskevich wrote:
<<SNIP>>

I know just learning embedded SQL I became somewhat
frustrated, knowing how easy it is with OPNQRYF. And
regardless of the enhancements, OPNQRY still seems to be
more integrated into RPG than SQL. <<SNIP>>

While I agree about using SQL versus OPNQRYF, I still offer...

Embedded SQL and dynamic SQL are no more integrated _into_ the RPG than OPNQRYF. Both CL and SQL are separate /languages/ that enable additional means of database access within the RPG. Although the SQL is a language which can have statements placed into another HLL language, the invocations are either via API or are effected only with the use of a pre-compiler [as a method of generating API calls equivalent to the statements]. Although the CL has no pre-compiler feature for use within another HLL, the use of the Control Language can also be accessed by API calls; i.e. commands [CL "statements"] placed into another HLL.

However the CL is a language which provides the OPNQRYF which creates an ODP. The RPG language actually has native statements\opcodes that can access an ODP directly, without any foreign language being embedded; i.e. no source directives are required to notify of the utilization of upcoming non-RPG requests. Of course actions must precede the RPG utilization, to both create and make available the ODP to the RPG program, prior to consumption; e.g. by READE. Contrast that with SQL for which there is no similar ability of preparing an ODP other than the CREATE of a database file. Yet that is not any better than CL since that feature allows that via CRTPF, CRTLF, RSTOBJ, or CRTDUPOBJ. And the RPG can /READ/ the ODP, but the RPG can not /READ/ the SQL SELECT [except when encapsulated in a VIEW or (non-EVI) INDEX as the database file]; of the SQL, the RPG can only /READ/ an ODP created by open of a VIEW, TABLE, or INDEX.

Because the native opcodes are utilized, the interface to the DB is effectively unchanged when using OPNQRYF. However contrast that with the SQL for which there are entirely different: set of error codes; method of error handling those conditions; method of record I\O. So which one really, is any more integrated _with_ RPG than the other?

FWiW I had always desired that an SQL SELECT statement as dynamic or embedded SQL could be issued with i-specific syntax to directly generate a shared ODP in an HLL, and then operate much the same as an OPNQRYF. This for example, as a new SQL CREATE:

CREATE ODP MYODP AS ( SELECT DBXFIL,DBXATR,DBXRDL FROM QSYS/QADBXREF WHERE DBXLNK='P' AND DBXLIB='MYLIB' ORDER BY DBXRDL DESC OPTIMIZE FOR ALL ROWS FOR READ ONLY WITH NC )

As it is now, one can replace the imaginary CREATE ODP statement with the real CREATE VIEW statement, but that still requires an OPNQRYF to establish the effects of the clauses from & after the ORDER BY, and whatever means of sharing the ODP that was created prior to the OPEN by the RPG.

Regards, Chuck

As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 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.