OCESQL
OCESQL 01 SQ0004.
OCESQL 02 FILLER PIC X(53) VALUE "INSERT INTO MY_TABLE VALUES ($"
OCESQL & "1, $2)".
OCESQL 02 FILLER PIC X(1) VALUE X"00".
OCESQL
OCESQL
OCESQL 01 SQ0005.
OCESQL 02 FILLER PIC X(56) VALUE "INSERT INTO MY_TABLE VALUES ($1, $"
OCESQL & "2, $3, $4, $5, $6, $7)".
OCESQL 02 FILLER PIC X(1) VALUE X"00".
OCESQL
* TEMPLATE CODE BECAUSE PREPROCESSOR WONT WORK
OCESQL 01 SQ0002.
OCESQL 02 SQL-QUERY PIC X(210) VALUE
"UPDATE MY_TABLE SET sequence_id = $2, amount = $3, "
& "transaction_type = $4, transaction_date = $5, "
& "asset_class = $6, "
& "account_class_id = $7 WHERE id = $1".
OCESQL 02 FILLER PIC X(1) VALUE X"00".
OCESQL 01 SQ0003.
OCESQL 02 SQL-QUERY PIC X(350) VALUE
"SELECT id, sequence_id, amount, transaction_type, "
& "transaction_date, "
& "asset_class, account_class_id FROM MY_TABLE "
& " WHERE id = $1".
OCESQL 02 FILLER PIC X(1) VALUE X"00".
OCESQL 01 SQ0007.
OCESQL 02 SQL-QUERY PIC X(350) VALUE
"SELECT class_name, class_value from accounting_classes"
& " WHERE class_name = $1".
OCESQL 02 FILLER PIC X(1) VALUE X"00".
PROCEDUREDIVISION.MOVE0TOMENU-OPTION.MAIN-RTN.*Starttheloopuntiltheuserselectsoption3PERFORMUNTILMENU-OPTION=3DISPLAY"Menu:"DISPLAY"1. Enter data"DISPLAY"2. Delete data"DISPLAY"3. Update data"DISPLAY"Choose an option (1-3): "ACCEPTMENU-OPTIONEVALUATEMENU-OPTIONWHEN1PERFORMLOG-INPERFORMENTER-DATAWHENOTHERDISPLAY"Invalid option. Please choose again."END-EVALUATEEND-PERFORMSTOPRUN.LOG-IN.MOVE"ocesql@127.0.0.1:5432"TODBNAME.MOVE"postgres"TOUSERNAME.MOVE"mypass"TOPASSWD.
OCESQL EXEC SQL
OCESQL CONNECT :USERNAME IDENTIFIED BY :PASSWD USING :DBNAME
OCESQL END-EXEC.
OCESQL EXEC SQL
OCESQL CONNECT :USERNAME IDENTIFIED BY :PASSWD USING :DBNAME
OCESQL END-EXEC.
OCESQL CALL "OCESQLConnect" USING
OCESQL BY REFERENCE SQLCA
OCESQL BY REFERENCE USERNAME
OCESQL BY VALUE 30
OCESQL BY REFERENCE PASSWD
OCESQL BY VALUE 15
OCESQL BY REFERENCE DBNAME
OCESQL BY VALUE 30
OCESQL END-CALL.
OCESQL EXEC SQL
OCESQL CONNECT :USERNAME IDENTIFIED BY :PASSWD USING :DBNAME
OCESQL* END-EXEC.
OCESQL CALL "OCESQLConnect" USING
OCESQL BY REFERENCE SQLCA
OCESQL BY REFERENCE USERNAME
OCESQL BY VALUE 30
OCESQL BY REFERENCE PASSWD
OCESQL BY VALUE 15
OCESQL BY REFERENCE DBNAME
OCESQL BY VALUE 30
OCESQL END-CALL.
OCESQL CALL "OCESQLExec" USING
OCESQL BY REFERENCE SQLCA
OCESQL BY REFERENCE "COMMIT" & x"00"
OCESQL END-CALL
IF SQLSTATE NOT = ZERO PERFORM ERROR-RTN STOP RUN. EXIT.
OCESQL CALL "OCESQLStartSQL"
OCESQL END-CALL
OCESQL CALL "OCESQLSetSQLParams" USING
OCESQL BY VALUE 1
OCESQL BY VALUE 11
OCESQL BY VALUE 0
OCESQL BY REFERENCE WS-ID
OCESQL END-CALL
OCESQL CALL "OCESQLSetSQLParams" USING
OCESQL BY VALUE 2
OCESQL BY VALUE 25
OCESQL BY VALUE 0
OCESQL BY REFERENCE WS-SEQ-ID
OCESQL END-CALL
OCESQL CALL "OCESQLSetSQLParams" USING
OCESQL BY VALUE 3
OCESQL BY VALUE 11
OCESQL BY VALUE 0
OCESQL BY REFERENCE WS-AMOUNT
OCESQL END-CALL
OCESQL CALL "OCESQLSetSQLParams" USING
OCESQL BY VALUE 4
OCESQL BY VALUE 50
OCESQL BY VALUE 0
OCESQL BY REFERENCE WS-TRANS-TYPE
OCESQL END-CALL
OCESQL CALL "OCESQLSetSQLParams" USING
OCESQL BY VALUE 5
OCESQL BY VALUE 10
OCESQL BY VALUE 0
OCESQL BY REFERENCE WS-TRANS-DATE
OCESQL END-CALL
OCESQL CALL "OCESQLSetSQLParams" USING
OCESQL BY VALUE 6
OCESQL BY VALUE 50
OCESQL BY VALUE 0
OCESQL BY REFERENCE REC-CLASS-NAME
OCESQL END-CALL
OCESQL CALL "OCESQLSetSQLParams" USING
OCESQL BY VALUE 7
OCESQL BY VALUE 02
OCESQL BY VALUE 0
OCESQL BY REFERENCE REC-CLASS-VALUE
OCESQL END-CALL
OCESQL CALL "OCESQLExecParams" USING
OCESQL BY REFERENCE SQLCA
OCESQL BY REFERENCE SQ0005
OCESQL BY VALUE 7
OCESQL END-CALL
OCESQL CALL "OCESQLEndSQL"
OCESQL END-CALL
IF SQLSTATE NOT = ZERO
PERFORM ERROR-RTN
EXIT PERFORM
END-IF
END-PERFORM.
OCESQL* EXEC SQL COMMIT WORK END-EXEC.
OCESQL CALL "OCESQLStartSQL"
OCESQL END-CALL
OCESQL CALL "OCESQLExec" USING
OCESQL BY REFERENCE SQLCA
OCESQL BY REFERENCE "COMMIT" & x"00"
OCESQL END-CALL
OCESQL CALL "OCESQLEndSQL"
OCESQL END-CALL.
* DISCONNECT
OCESQL EXEC SQL
OCESQL DISCONNECT ALL
OCESQL* END-EXEC.
OCESQL CALL "OCESQLDisconnect" USING
OCESQL BY REFERENCE SQLCA
OCESQL END-CALL.
*ENDDISPLAY"*** INSERTTBL FINISHED ***".STOPRUN.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
Anonymous
-
2024-11-30
Hello there is a link to the dd2 12.1 documentation for db2 for Linux and
windows I'll send you that tomorrow it's kind of late right now also there
are some requirements to compile and bind your programs in db2 I did some
testing about 2 years ago and at that time the only way it would work is
with a static Link at it rather than a dynamic call so I have some JCL for
that actually just some windows batch scripts all of my work was done in
Windows and it works with 64-bit compiler or the 32-bit compiler either one
I'll send you more information tomorrow if you want it just send me an
email and I will respond with that information
If there are grammar errors in this email it's because I dictated it with
my phone
C:\Users\stealth_droid>DB2 "SELECT COLUMN_NAME, DATA_TYPE FROM SYSIBM.COLUMNS WHERE TABLE_NAME = 'MY_TABLE' AND TABLE_SCHEMA = 'STEALTH_DROID' ORDER BY COLUMN_NAME";
COLUMN_NAME DATA_TYPE
AMOUNT DECIMAL
ASSET_CLASS CHARACTER VARYING
CLASS_NAME CHARACTER VARYING
CLASS_VALUE INTEGER
ID INTEGER
SEQ_ID CHARACTER VARYING TRANS_DATE DATE
IT DIDNT LIKE THE LENGTH, DEFAULT, OR NULLS FIELDS BUT I GOT SOMETHING...
C:\Users\stealth_droid>DB2 insert into MY_TABLE (SEQ_ID, AMOUNT, CLASS_NAME, TRANS_DATE, ASSET_CLASS, CLASS_VALUE) VALUES ('55A', 15.25, 'EXPENSE', DATE '2024-11-29', 'SALES', 5);
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0668N Operation not allowed for reason code "7" on table"STEALTH_DROID.MY_TABLE". SQLSTATE=57007
I PUT IN ACCORDING TO THE SCHEMA BUT I DONT KNOW WHY IT PROBABLY HAS SOMETHING TO DO WITH THE GENERATOR I LEFT I LEFT IT OFF THINKING IT COULD HANDLE GENERATING IF I OMMITTED
HI ALL-
MY DB IS WORKING FINE THERE IS SOME CONTROL FLOW ISSUE WITH
INSERTING INTO MY_TABLE SQ0005.
ANY TIP WILL HELP.
I AM GOING TO CRASH FOR A WHILE. I AM VERY TIRED.
THANKS
OCESQL EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 WS-REC.
05 REC-ID PIC 9(5).
05 REC-CLASS-NAME PIC X(50) VALUE "Expense".
05 REC-CLASS-VALUE PIC 9(2).
OCESQL EXEC SQL END DECLARE SECTION END-EXEC.
OCESQL EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 DBNAME PIC X(50) VALUE SPACE.
01 USERNAME PIC X(30) VALUE SPACE.
01 PASSWD PIC X(13) VALUE SPACE.
01 EMP-REC-VARS.
03 EMP-NO PIC S9(04) VALUE ZERO.
03 EMP-NAME PIC X(20) .
03 EMP-SALARY PIC S9(04) VALUE ZERO.
OCESQL EXEC SQL END DECLARE SECTION END-EXEC.
OCESQL* EXEC SQL INCLUDE SQLCA END-EXEC.
OCESQL copy "sqlca.cbl".
OCESQL
OCESQL 01 SQ0001.
OCESQL 02 FILLER PIC X(040) VALUE
"DELETE FROM MY_TABLE WHERE ID = '135'".
OCESQL 02 FILLER PIC X(1) VALUE X"00".
OCESQL
OCESQL
OCESQL 01 SQ0004.
OCESQL 02 FILLER PIC X(53) VALUE "INSERT INTO MY_TABLE VALUES ($"
OCESQL & "1, $2)".
OCESQL 02 FILLER PIC X(1) VALUE X"00".
OCESQL
OCESQL
OCESQL 01 SQ0005.
OCESQL 02 FILLER PIC X(56) VALUE "INSERT INTO MY_TABLE VALUES ($1, $"
OCESQL & "2, $3, $4, $5, $6, $7)".
OCESQL 02 FILLER PIC X(1) VALUE X"00".
OCESQL
* TEMPLATE CODE BECAUSE PREPROCESSOR WONT WORK
OCESQL 01 SQ0002.
OCESQL 02 SQL-QUERY PIC X(210) VALUE
"UPDATE MY_TABLE SET sequence_id = $2, amount = $3, "
& "transaction_type = $4, transaction_date = $5, "
& "asset_class = $6, "
& "account_class_id = $7 WHERE id = $1".
OCESQL 02 FILLER PIC X(1) VALUE X"00".
OCESQL 01 SQ0003.
OCESQL 02 SQL-QUERY PIC X(350) VALUE
"SELECT id, sequence_id, amount, transaction_type, "
& "transaction_date, "
& "asset_class, account_class_id FROM MY_TABLE "
& " WHERE id = $1".
OCESQL 02 FILLER PIC X(1) VALUE X"00".
OCESQL 01 SQ0007.
OCESQL 02 SQL-QUERY PIC X(350) VALUE
"SELECT class_name, class_value from accounting_classes"
& " WHERE class_name = $1".
OCESQL 02 FILLER PIC X(1) VALUE X"00".
OCESQL EXEC SQL
OCESQL CONNECT :USERNAME IDENTIFIED BY :PASSWD USING :DBNAME
OCESQL END-EXEC.
OCESQL EXEC SQL
OCESQL CONNECT :USERNAME IDENTIFIED BY :PASSWD USING :DBNAME
OCESQL END-EXEC.
OCESQL CALL "OCESQLConnect" USING
OCESQL BY REFERENCE SQLCA
OCESQL BY REFERENCE USERNAME
OCESQL BY VALUE 30
OCESQL BY REFERENCE PASSWD
OCESQL BY VALUE 15
OCESQL BY REFERENCE DBNAME
OCESQL BY VALUE 30
OCESQL END-CALL.
OCESQL EXEC SQL
OCESQL CONNECT :USERNAME IDENTIFIED BY :PASSWD USING :DBNAME
OCESQL* END-EXEC.
EXIT.
OCESQL EXEC SQL
OCESQL CONNECT :USERNAME IDENTIFIED BY :PASSWD USING :DBNAME
OCESQL* END-EXEC.
OCESQL CALL "OCESQLConnect" USING
OCESQL BY REFERENCE SQLCA
OCESQL BY REFERENCE USERNAME
OCESQL BY VALUE 30
OCESQL BY REFERENCE PASSWD
OCESQL BY VALUE 15
OCESQL BY REFERENCE DBNAME
OCESQL BY VALUE 30
OCESQL END-CALL.
OCESQL CALL "OCESQLExec" USING
OCESQL BY REFERENCE SQLCA
OCESQL BY REFERENCE "COMMIT" & x"00"
OCESQL END-CALL
IF SQLSTATE NOT = ZERO PERFORM ERROR-RTN STOP RUN. EXIT.
OCESQL EXEC SQL
OCESQL SELECT class_name, class_value
OCESQL FROM accounting_classes
OCESQL WHERE class_name = :REC-CLASS-NAME;
OCESQL* END-EXEC.
OCESQL CALL "OCESQLExec" USING
OCESQL by REFERENCE SQLCA
OcESQL END-CALL.
OCESQL CALL "OCESQLExec" USING
OCESQL BY REFERENCE SQLCA
OCESQL BY REFERENCE "COMMIT" & x"00"
OCESQL END-CALL.
OCESQL CALL "OCESQLStartSQL"
OCESQL END-CALL
OCESQL CALL "OCESQLSetSQLParams" USING
OCESQL BY VALUE 1
OCESQL BY VALUE 11
OCESQL BY VALUE 0
OCESQL BY REFERENCE WS-ID
OCESQL END-CALL
OCESQL CALL "OCESQLSetSQLParams" USING
OCESQL BY VALUE 2
OCESQL BY VALUE 25
OCESQL BY VALUE 0
OCESQL BY REFERENCE WS-SEQ-ID
OCESQL END-CALL
OCESQL CALL "OCESQLSetSQLParams" USING
OCESQL BY VALUE 3
OCESQL BY VALUE 11
OCESQL BY VALUE 0
OCESQL BY REFERENCE WS-AMOUNT
OCESQL END-CALL
OCESQL CALL "OCESQLSetSQLParams" USING
OCESQL BY VALUE 4
OCESQL BY VALUE 50
OCESQL BY VALUE 0
OCESQL BY REFERENCE WS-TRANS-TYPE
OCESQL END-CALL
OCESQL CALL "OCESQLSetSQLParams" USING
OCESQL BY VALUE 5
OCESQL BY VALUE 10
OCESQL BY VALUE 0
OCESQL BY REFERENCE WS-TRANS-DATE
OCESQL END-CALL
OCESQL CALL "OCESQLSetSQLParams" USING
OCESQL BY VALUE 6
OCESQL BY VALUE 50
OCESQL BY VALUE 0
OCESQL BY REFERENCE REC-CLASS-NAME
OCESQL END-CALL
OCESQL CALL "OCESQLSetSQLParams" USING
OCESQL BY VALUE 7
OCESQL BY VALUE 02
OCESQL BY VALUE 0
OCESQL BY REFERENCE REC-CLASS-VALUE
OCESQL END-CALL
OCESQL CALL "OCESQLExecParams" USING
OCESQL BY REFERENCE SQLCA
OCESQL BY REFERENCE SQ0005
OCESQL BY VALUE 7
OCESQL END-CALL
OCESQL CALL "OCESQLEndSQL"
OCESQL END-CALL
IF SQLSTATE NOT = ZERO
PERFORM ERROR-RTN
EXIT PERFORM
END-IF
END-PERFORM.
OCESQL* EXEC SQL COMMIT WORK END-EXEC.
OCESQL CALL "OCESQLStartSQL"
OCESQL END-CALL
OCESQL CALL "OCESQLExec" USING
OCESQL BY REFERENCE SQLCA
OCESQL BY REFERENCE "COMMIT" & x"00"
OCESQL END-CALL
OCESQL CALL "OCESQLEndSQL"
OCESQL END-CALL.
OCESQL EXEC SQL
OCESQL DISCONNECT ALL
OCESQL* END-EXEC.
OCESQL CALL "OCESQLDisconnect" USING
OCESQL BY REFERENCE SQLCA
OCESQL END-CALL.
J McNamara,
are you using this for personal usage or in a commercial environment ?
if personal use, you may consider DB2 Community Edition
https://www.ibm.com/products/db2-database
it includes a cobol precompiler which works well. lt also comes with a sample database and a number of sample cobol programs.
hey Chuck-
THANKS I am going to switch.
I just happen to have a db2/apache derby very old manual at home.
It is a 2006 manual and details cloudscape and the differences.
I will start reading and install the next couple of days.
thanks so much for letting me know,
jim
Mod edit: remove reply-to
Last edit: Brian Tiffin 2024-12-01
Hello there is a link to the dd2 12.1 documentation for db2 for Linux and
windows I'll send you that tomorrow it's kind of late right now also there
are some requirements to compile and bind your programs in db2 I did some
testing about 2 years ago and at that time the only way it would work is
with a static Link at it rather than a dynamic call so I have some JCL for
that actually just some windows batch scripts all of my work was done in
Windows and it works with 64-bit compiler or the 32-bit compiler either one
I'll send you more information tomorrow if you want it just send me an
email and I will respond with that information
If there are grammar errors in this email it's because I dictated it with
my phone
Chuck Haatvedt
Mod edit: remove reply-to
Last edit: Brian Tiffin 2024-12-01
thanks Chuck.
Please forward it. I am ready to get busy. It sounds like very cool info.
I'm just sitting down to etack the project.
I am on GMT-5 time.
You must be in Asia/East.
have cool day,
J. McNamara
Mod edit: remove reply-to
Last edit: Brian Tiffin 2024-12-01
HI ,
HOW IN THE WORLD DO YOU GET A NICE PRINTOUT OF SCHEMA FOR DB2?
IT IS VERY CHALLENGING.
i TRIED ABOUT SEVERAL WAYS AND NO JOY.
IT WONT COME OUT NICELY FORMATTED.
THANKS FOR ANY ASSISTANCE,
JIM
Mod edit: remove reply-to
Last edit: Brian Tiffin 2024-12-01
C:\Users\stealth_droid>DB2 "SELECT COLUMN_NAME, DATA_TYPE FROM SYSIBM.COLUMNS WHERE TABLE_NAME = 'MY_TABLE' AND TABLE_SCHEMA = 'STEALTH_DROID' ORDER BY COLUMN_NAME";
COLUMN_NAME DATA_TYPE
AMOUNT DECIMAL
ASSET_CLASS CHARACTER VARYING
CLASS_NAME CHARACTER VARYING
CLASS_VALUE INTEGER
ID INTEGER
SEQ_ID CHARACTER VARYING TRANS_DATE DATE
IT DIDNT LIKE THE LENGTH, DEFAULT, OR NULLS FIELDS BUT I GOT SOMETHING...
mod edit: reply-to
Last edit: Brian Tiffin 2024-12-01
C:\Users\stealth_droid>DB2 insert into MY_TABLE (SEQ_ID, AMOUNT, CLASS_NAME, TRANS_DATE, ASSET_CLASS, CLASS_VALUE) VALUES ('55A', 15.25, 'EXPENSE', DATE '2024-11-29', 'SALES', 5);
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0668N Operation not allowed for reason code "7" on table"STEALTH_DROID.MY_TABLE". SQLSTATE=57007
I PUT IN ACCORDING TO THE SCHEMA BUT I DONT KNOW WHY IT PROBABLY HAS SOMETHING TO DO WITH THE GENERATOR I LEFT I LEFT IT OFF THINKING IT COULD HANDLE GENERATING IF I OMMITTED
THANKS FOR ANY ASSISTANCE
JIM
Mod edit: remove reply-to
Last edit: Brian Tiffin 2024-12-01
Hi Jim,
maybe this can help you:
https://www.ibm.com/support/pages/how-verify-and-resolve-sql0668n-reason-code-7-when-accessing-table#:~:text=If%20you%20receive%20error%20SQL0668N,is%20in%20reorg%20pending%20state.
The table is in 'pending' state, a REORG command is needed.
Try with:
db2 “reorg table STEALTH_DROID.MY_TABLE”
Regards
Sauro
I use DBeaver to browse databases, it works with multiple RDBMS.
https://dbeaver.io/