|
On Aug 24, 2021, at 6:57 AM, Roberto De Pedrini <roberto.faq400@xxxxxxxxx> wrote:
I have a problem with a big number of "Full-Opens" that comes to light with
an iDoctor analysis and I tried to solve it by moving from native i/o to
SQL i/o without achieving any improvement.
First of all: All the "ERP solution" don't access the database directly
but through some service programs with procedures like "GetRecFile01" (see
below).
So I wrote some tests that read 1 million records and call decoding
procedures in different ways ... but I got completely different results:
tests count a few full-opens both in native and in SQL I/O, despite a
million records read. Standard programs count a lot of FullOpens both in
native and in SQL I/O!
If I run in debug mode programs (with SQL I/O) that count a lot of
"full-opens" I see a lot of SQL7911 ODP Reused ... why iDoctor count so
much "full-opens"?
I added this SQL option in my SRVPGMs too.
"exec sql set option closqlcsr = *endactgrp;"
I don't understand!
Question 2: How can I count native-full-opens without iDoctor so I can try
and see easily with an SQL statement?
I tried STRDBMON and QMGTOOLS/STRPSC JOBWATCHER(Y) but I can't find those
numbers in logs files
---
Examples
---
-----
GetRecFile01 Record Access Procedure for FILE01 in a SRVPGM (with native
I/O "original")
...
FFILE0101L IF E K DISK USROPN
...
PGetRecFile01 B EXPORT
DGetRecFile01 PI n
D entryId CONST LIKE(FILE01Id)
D exitRecord LIKEREC(FILE01RKD)
IF NOT %OPEN(FILE0101L) ;
OPEN FILE0101L ;
ENDIF ;
CHAIN (entryId) FILE0101L exitRecord ;
IF NOT %FOUND ;
CLEAR exitRecord ;
ENDIF ;
RETURN %FOUND ;
P E
---
GetRecFile01NEW Record Access Procedure for FILE01 in a SRVPGM (with SQL
I/O)
...
dcl-ds FILE01DS extname('FILE010F') template qualified end-ds;
..
exec sql set option closqlcsr = *endactgrp;
..
Dcl-Proc GetRecFile01New EXPORT;
Dcl-PI GetRecFile01New Ind;
entryId CONST LIKE(FILE01DS.Id);
exitRecord LIKEDS(FILE01DS);
End-PI;
exec sql
select * into :exitRecord :null_ds
from FILE010F
where id=:entryid;
select;
when sqlcod=100;
clear exitRecord;
return *off;
when sqlcod<0;
EXEC SQL GET DIAGNOSTICS CONDITION 1 :ERR= MESSAGE_TEXT ;
DSPLY ('01-'+ERR);
clear exitRecord;
return *off;
ENDSL;
return *on;
end-proc;
--
--
Roberto De Pedrini - Faq400 Srl
http://blog.faq400.com/en *A new IBM i Blog from IBM i Italian Community
Faq400*
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.
Help support midrange.com by shopping at amazon.com with our affiliate link: https://amazon.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.