|
Hi Javier, sorry but I'm not a MI friend :-)
When you asked about ctl boundaries I was looking how to test program state
(we have a problem with sockets pgm's) that's why I was so prompt :-)
Best regards
--
Marco Facchinetti
Mr S.r.l.
Tel. 035 962885
Cel. 393 9620498
Skype: facchinettimarco
Il giorno mer 12 feb 2025 alle ore 12:27 datil400 <datil400@xxxxxxxxx> ha
scritto:
Hi Marco,with
I have not tested the performance of both options in a controlled
environment. Juenli Liu says that the MI solution is much faster than the
API. Keep in mind that the latter is always a dynamic call to program,
the cost that implies.like
Another issue, do you have experience in the use of MATINVAT? Do you know
any examples of complex use?
Best regards,
Javier Mora
El mar, 11 feb 2025 a las 19:08, Marco Facchinetti (<
marco.facchinetti@xxxxxxxxx>) escribió:
Hi Javier, just a question about QWVRCSTK.
Since we use it a lot in trigger programs to avoid actions (recursive
calls) if the trigger invocation is caused by specific programs I'd
toattention
know how expensive can be the API instead of MI.ha
TIA
--
Marco Facchinetti
Mr S.r.l.
Tel. 035 962885
Cel. 393 9620498
Skype: facchinettimarco
Il giorno mar 11 feb 2025 alle ore 18:58 datil400 <datil400@xxxxxxxxx>
scritto:
Thanks Marco,
I have read this documentation dozens of times and never paid
handlerto
this attribute.
I am going to try
Javier Mora
El mar, 11 feb 2025 a las 18:36, Marco Facchinetti (<
marco.facchinetti@xxxxxxxxx>) escribió:
Hi Javier, about MATINVAT:flags).
19
Invocation status of the specified invocation (including invocation
Bit 0invocation
Cancelled
Bit 1
Ending -- a return operation has been initiated from within the
or the actual termination of a cancelled invocation has begun.
Bit 2
Invocation interrupted by exception
Bit 3
Invocation interrupted by event (reserved)
Bit 4
Invocation is a non-bound program CALLX exception handler
Bit 5
Invocation contains a non-bound program CALLI exception handler
Bit 6
Invocation contains a signalled non-bound program branchpoint
thisinBit 7
Retry not allowed
Bit 8
Resume not allowed
Bit 9
Resume point has been modified
Bit 10
Invocation is a program entry procedure and is marked as the oldest
informationthe
activation group (This is also known as a hard control boundary.)
Bit 11
Invocation is a soft control boundary.
Bit 12
Invocation created an unnamed activation group.
Bits 13-15
Reserved
Bits 16-31
Invocation flags
(4 bytes.)
Performance consideration: When the only invocation status
performancerequired is the invocation flags, there may be a significant
advantage if the following attribute is materialized instead of
toone.datil400@xxxxxxxxx>
HTH
--
Marco Facchinetti
Mr S.r.l.
Tel. 035 962885
Cel. 393 9620498
Skype: facchinettimarco
Il giorno mar 11 feb 2025 alle ore 16:08 datil400 <
ha
scritto:
Hi Martijn,
thank you for answering. I already have a utility that allows me
chancesbutload
and traverse the call stack using the QWVRCSTK API. It is valid
ishas
entirelow performance.
I am looking for a faster solution where I don't need to load the
call stack. It is a little challenge I have set myself.
Best regards
Javier Mora
El mar, 11 feb 2025 a las 13:49, Martijn van Breden (<
m.vanbreden@xxxxxxxxxxxxxxxxxxxxxxxxxx>) escribió:
On the risk of being accused that whatever the question is, SQL
youthe
answer... 😉
Have you tried the table function Stack_info(). It does present
control boundaries. It may not be as fast as MI api's but
callaretraverse
that
your successors love you for using SQL instead of api's 🙂
Kind regards,
Martijn van Breden
lead software architect
Hi Jon,
In 2010, Junlei Li published an article explaining how to
entirethe
call
stack using MI. Very fast and efficient, no need to load the
call
stack. That utility provided a lot of information about the
instack
entry, but not the ‘control boundary’.
I have been using a self-developed tool for exception handling
myRPG
findfor
several years, in which I use the Junlei utility. Now I need to
outprocedures
the 'control boundaries', at least the nearest one, for some
responsible for sending messages.
My idea is to simulate the new %target(*CTLBDY...) built-in in
onjon.paris@xxxxxxxxxxxxxxexceptionchoice, I
handling tool.
As a challenge I find it very interesting. If there is no other
will use the QWVRCSTK API.
Best regards,
Javier Mora
El lun, 10 feb 2025 a las 18:46, Jon Paris (<
)
escribió:
Perhaps if you told us _why_ you want this and what you plan
https://www.ibm.com/docs/en/i/7.5?topic=execution-materialize-invocation-stack-matinvsusing
it
for we might be able to offer some alternative suggestions.
Jon Paris
Jon.Paris@xxxxxxxxxxxxxx
On Feb 10, 2025, at 12:44 PM, datil400 <datil400@xxxxxxxxx
notwrote:
trying
Thanks Marco for your help.
With the instructions FNDRINVN, MATINVAT and MATPTRIF, I am
to
get
whether any stack entry is a control boundary or not. I am
findingcomparing
this
information when materializing the corresponding pointers.
I think I could deduce it from the activation group mark by
it
with the previous entry.
I don't know if I'm on the right track.
Javier Mora
El lun, 10 feb 2025 a las 17:38, Marco Facchinetti (<
marco.facchinetti@xxxxxxxxx>) escribió:
release
But don't forget:
Warning
The following information is subject to change from
toan
eachrelease.
Use
it with caution and be prepared to adjust for changes with
Attributesnew
release.
Note
It is recommended that you use Materialize Invocation
(MATINVAT)
or Materialize Invocation Entry (MATINVE) to materialize
tounexpected8-byte
invocation mark. 4-byte marks can wrap and produce
informationresults.
datil400@xxxxxxxxx
--
Marco Facchinetti
Mr S.r.l.
Tel. 035 962885
Cel. 393 9620498
Skype: facchinettimarco
Il giorno lun 10 feb 2025 alle ore 17:06 datil400 <
ha
scritto:
Hi guys,
QWVRCSTK API and STACK_INFO table function return
about
the
control boundary of each entry in the call stack.
I have been investigating to find out if it is possible
archivesthatobtain
this
data
through the machine interface. I have not found anything
listhelps
me.
Is this possible?
Best regards
--
Javier Mora
https://github.com/datil400
--
This is the RPG programming on IBM i (RPG400-L) mailing
https://lists.midrange.com/mailman/listinfo/rpg400-lTo post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit:
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the
listsubscriptionat https://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any
related
questions.--
This is the RPG programming on IBM i (RPG400-L) mailing
https://lists.midrange.com/mailman/listinfo/rpg400-lTo post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit:
archivesor email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the
listsubscriptionat https://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any
related
questions.--
This is the RPG programming on IBM i (RPG400-L) mailing
https://lists.midrange.com/mailman/listinfo/rpg400-lTo post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit:
subscriptionsubscriptionsubscriptionor 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
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
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
subscriptionrelated
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
relatedrelatedrelatedrelatedrelated
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
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
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
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
--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.
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 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.