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



Steve Richter wrote:
I would like to see the entire call stack preserved, all the static
and automatic storage, all the open data paths. On the database side,
with complete journaling, I would like to tell the system I want to
resume a job with the database set to the state it was at on the date
and time the job failed.

I was looking at the situation from a problem determination / debugging front. This sounds like the recovery part.

When you ask for the call stack and storage to be preserved, do you mean in such a way that you can change recompile the program and pick up exactly where you left off, or are you thinking more of documentation to discover where the problem is? If the latter, various dumps do that today. If the former, I can't see how to restart an HLL program at the same instruction after the program has been recompiled and the instructions no longer match the preserved (halted) job.

For setting the database back to the state it was at at the point of an error, if your application doesn't COMMIT and ROLLBACK on its own, have a look at RMV and APYJRNCHG, available at least since S/38 CPF release 8. In general I would find it difficult to resume a job (apparently a batch job) by rolling the database backward because I would be losing changes made while I was working on the program. But I understand that there are still places where pure batch processing occurs (e.g. nightly jobs with no interactive users on.)

This borders on application design rather than debugging, but it's a pet peeve of mine that so few programmers trap I/O errors. I'm in the camp that feels a robust program expects errors and is ready to handle them. In the case of a batch transaction process, the input file has a 'processed' flag that gets COMMITted during the same commit cycle that the master file gets updated. Then a restart is as simple as running the job again. The records that were updated are skipped on the rerun because they are already tagged, and the record that was partially updated during the error was rolled back and so never updated at all.

Just like the Agile people like to make code that's inherently testable, I think that our code should be inherently re-runnable.
--buck

As an Amazon Associate we earn from qualifying purchases.

This thread ...

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.