× 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.



I see this

dcl-d Animals extname('ANIMALS')
Qualified dim(*Auto : 100); // <<< NOTE *AUTO
end-ds;

dcl-d ?

One trick that I do with SQL and a program does not compile is to change
the type of the program from SQLRPGLE to RPGLE and then do a 15 in PDM to
compile. It won't compile but when you look you will find your other error
that is stopping the program from compiling.

Also, I know that this is a test program but very poor code as example. You
have no error check on open and on the fetch. Must have error checking on
SQL statements except Declare or Close. If you don't you are going to get
silent errors in your code.

EXEC SQL OPEN C1 ;
If SqlState <> SQL_STATE_OK;
// Throw error
EndIf;

exec sql FETCH C1 FOR 100 ROWS
INTO :Animals;
Select;
When SqlState = SQL_STATE_NO_ROW;
Exec Sql Close C1;
When SqlState = SQL_STATE_OK;
// Process rows;
Other;
// Throw error.
EndSl;

Just check SQLCode for non-zero is a bomb waiting to go off.


On Mon, Feb 12, 2024 at 1:07 PM Thomas Burrows <
thomas.burrows.1957@xxxxxxxxx> wrote:

My library on PUB400.com is COBOLKID1
Program name is JONPGM.

I am getting the SQL precompiler error of three pages. Showing
that "selectType" is not valid.

Are you able to look in my library?

CREATE OR REPLACE TABLE COBOLKID1.ANIMALS (
"ID" INTEGER NOT NULL ,
"TYPE" VARCHAR(16) CCSID 37 NOT NULL ,
NAME VARCHAR(16) CCSID 37 NOT NULL ,
WEIGHT DECIMAL(7, 2) NOT NULL )

RCDFMT ANIMALSR ;

//**************************************************
//* Declare program variables. *
//* STMT initialized to the *
//* listed SQL statement. *
//**************************************************
ctl-opt option(*nodebugio:*srcstmt:*nounref) ;

dcl-d Animals extname('ANIMALS')
Qualified dim(*Auto : 100); // <<< NOTE *AUTO
end-ds;

dcl-ds Animal LikeDS(Animals); // <<< Define with LikeDS
// so that for-each works

dcl-s selectType like(Animals.type) Inz('Dog');

//*************************************************************
//* Declare Cursor *
//*************************************************************

EXEC SQL DECLARE C1 CURSOR FOR SELECT *
FROM ANIMALS where TYPE = :selectType;

//*************************************
//* Open CURSOR *
//*************************************

EXEC SQL OPEN C1 ;

exec sql FETCH C1 FOR 100 ROWS
INTO :Animals;

if (SQLCOD = 0) ;
for-each Animal in Animals; // This does the data copying
// no need to do it "by hand"
// or at least use Eval-COrr
dsply ('Found ' + Animal.name);
endfor ;
endif;

EXEC SQL COMMIT;
EXEC SQL CLOSE C1;

*Inlr = *On;


On Mon, Feb 12, 2024 at 2:58 PM Sam_L <lennon_s_j@xxxxxxxxxxx> wrote:

That is the complete DCL-DS statement. It compiles on PUB400.COM, which
is at V7R5. Sorry, I don't know what PTFs are loaded.

Maybe looking into the RPG manual "What's new in ..." section would tell
if PTFs are needed.

If you want to post your failing dcl-ds I can try it on PUB400.

Sam

On 2/12/2024 3:12 PM, Thomas Burrows wrote:
Sam:
How did you get your Data Structure to compile?

dcl-ds csz_a dim(*auto : 50000) qualified;
Have been told by Jon Paris that the system needs to be at least V7R4
to
get the
DIM(*auto : number) to compile. But my tests on V7R5 still has a
compile
error
on this line.

Can you show your complete DCL-DS statement?
What release level are you on? Any special PTF's?

--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related
questions.


--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related
questions.



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

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.