SSI experience



First of all, I'd like to thank everybody who helped me with the subsystem
documentation and debugging, especially, Sam Knutson, Tom Schmidt and
Binyamin Dissen - your input was much appreciated.

Let me also share some of the experience [for the archive]:

a) Contrary to the doc "Using the SSI", do NOT place your function routines
in either LPA or the LNKLST [while debugging, of course]. The latter
requires LOAD-TO-GLOBAL option on the SSVTI entry which causes the routine
to be stuck in CSA. In either case this becomes a PITA if you need to
refresh the code after a recompile [there are programmatic ways of
refreshing a function but they require extra coding]. Instead - code a small
stub to load your function, define it in SSVTI so that your actual function
routine can happily live in any APF-authorized library NOT associated with
the LNKLST.

b) If during CLOSE you'd like to reuse the working storage acquired by OPEN,
you might be able to keep its pointer in SSDASSCM

c) Personally, I like the idea of a single working storage shared among the
various entry points [helps debugging], so I am also preserving its pointer
in a task-level NAME/TOKEN pair, where the name suffix is made of such ACB
fields as ACBUJFCB and/or ACBDEB. Whether the entry points are passed the
"true" user ACB or the protected copy, these fields are going to remain the
same. This way the GetPut routine can easily construct a proper token name
and retrieve its value. Comes handy, because the GetPut routine does need to
access the DCB built during Open.

d) However, the token retriever [IEANTRT] needs 52 bytes: 4 arguments with
the total length of 36 bytes plus 4 addresses. Don't you hate to
OBTAIN/RELEASE 52 bytes upon each and every entry just for the purpose of
locating working storage? Me too. Luckily, there is a tricky workaround
[left as an exercise and also to prevent flames]

-Victor-

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to listserv@xxxxxxxxxxx with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

.



Relevant Pages

  • Re: I finally found the wooden stake to drive through my programs still beating heart!
    ... Doesn't Raise do substantially the same thing as Resume to the statement that caused the problem, as then both simply send the same error up the same chain of error handling? ... unnecessary breaks are often catastrophic to debugging because they steal the focus from where the speech recognition output is going which has nasty ripple effects. ... Instead of saying On Error GoTo 0 before all of my subroutine calls as I now do, ... so that when running from an EXE I would rattle back through the error handling routines in every routine in the call stack as you now do, yet in the IDE I could still stop on THE statement with the problem with no re-execution of other statements. ...
    (microsoft.public.vb.enterprise)
  • Re: Passing txtBox to Sub
    ... my msgbox popups are only from the OK button routine. ... highlighting the bad entry until it is ... > be included in the validation, and keeps the whole thing centralized. ...
    (comp.lang.basic.visual.misc)
  • Re: ASP.NET 2.0: Page loaded twice on debug.
    ... had any problem using VS 2003 but today, debugging a page, I get ... false and teh Load event handler was bound in a generated ... autowire events (in the PAGE directive in the aspx ... the page_load routine TWICE as the routine is bound to the event twice ...
    (microsoft.public.dotnet.general)
  • Re: Recommend a debugger
    ... Originally it was just saying " Setup has encountered a problem and will now terminate") ... This part of the setup program appears not to be using Microsoft Windows Installer, but is using InstallShield 11.0 in some other manner. ... I looked at the .dll routine being called with PE Explorer ... I have "Debugging Tools for Windows" which has WinDbg.exe, ...
    (microsoft.public.vc.mfc)
  • Re: Is it possible to access register contents in a PL/I program?
    ... I think that's what the F compiler did, but according to the program listing shown in the Optimizing Compiler programmer's Guide, SC33-0006-4 the code at an entry point starts off as follows: ... Looking at this more carefully, I see that the code goes on to use the value at offset 76 in the caller's dsa as the proposed address of its own dsa; it adds to this the size of its dsa and compares the result to the value at 12to check for sufficient space. ... The upshot is that a non PL/I routine cannot blithely call a PL/I routine, so the code I gave will only work if the calling routine knows it is calling a PL/I routine and has allocated its dsa on the PL/I runtime stack. ...
    (comp.lang.pl1)