Re: COBOL's Influence on C
- From: "tlmfru" <lacey@xxxxxxx>
- Date: Fri, 16 Nov 2007 22:48:25 -0600
Man, you guys are making static binding sound more attractive all the time!
<grin>
PL
Robert <no@xxxxxx> wrote in message
news:vpbsj39k8ke0fthchf70c9g0ivabtmo3t5@xxxxxxxxxx
On Sat, 17 Nov 2007 01:10:09 +1300, "Pete Dashwood"<dashwood@xxxxxxxxxxxxxxxxxxxxxxxxx>
wrote:wrote:
"Robert" <no@xxxxxx> wrote in message
news:5nspj3tm974nq8isu919j2fut34ipg7sh5@xxxxxxxxxx
On Fri, 16 Nov 2007 11:20:25 +1300, "Pete Dashwood"
<dashwood@xxxxxxxxxxxxxxxxxxxxxxxxx>
wrote:
"Robert" <no@xxxxxx> wrote in message
news:ao5nj3htd2qp1g6p1r7r2c8pvmp8556ul5@xxxxxxxxxx
On Wed, 14 Nov 2007 00:55:56 -0800, Richard <riplin@xxxxxxxxxxxx>
languages<snip>>
Your bitch is that with dynamic calling they can't know what will be
loaded.
How is that the fault of the language designers?
Cobol is the only language that has this problem. Other compiled
providereveal the
names of their children as EXTERNALs.
They can't if it isn't known until runtime. Statically linked COBOL will
also grizzle about unresolved EXTERNs, but it does so at Link time.
Leaving that aside for a moment, there must be approaches that can
programa
"skeleton" JCL procedure, or set of JCL (or equivalent) for ANY
comesthat is doing dynamic calling. If you can't know what is being called,
then
you can't pre-check individual load module names/versions, but, you CAN
make
sure that the libraries containing ANYTHING that might be called are on
line
to the job.
p: Why didn't you run my job last night?
a: The verifier said Maestro was not available.
p: What the hell is Maestro?
a: Something to do with the Mars Rover.
p: My job runs payroll. It doesn't use Maestro.
a: How are we supposed to know? Maestro is on the library list.
p: What else is on the library list?
a: Thousands of libraries.
p: The only library I use is a check formatter.
a: See, there you go. We can't run your job until ALL libraries are
available.
And why would you have "thousands of libraries" on the list? This now
There is nodown to an Administrative responsibility.
For openers, every database table has a library of data layer functions.
embedded SQL in application programs. There are 10,000s of tables.Jobs
For example, if there are rules
about how libraries get assigned to subsytems, the chaos is diminished.
manageable,running certain systems will only reference libraries pertinent to those
systems, and common libraries used for common components. It is
groups all over thebut it needs ot be managed. If you DON't manage it, it is hardly fair to
blame the COBOL language...
That works in small to medium shops. We have hundreds of development
world, each managing its own libraries.an
Shop Programming Standards can ensure that every program logs
itself and its version when loaded, if that is a concern, so there is
dependaudit trail if required.
The scheduler is capable of logging jobs and programs. It doesn't
youon every program to "log itself".
The problem is jobs aborting because of missing programs. Keeping logs
does nothing to address that problem.
It indicates which programs (and which version of them) called missing
programs, and what thiose missing programs should have been. Certainly,
necessarily the name ofcould also derive this information from other system sources, but it is a
convenient one.
The log contains the name of the failed job and program, but not
the called program.minimum version of
Version control is another aspect. A program can optionally specify the
a library in its ELF header. For example, 'foo 3.2 or greater'. If thelibrary is 3.1,
the bind fails, similar to a missing library.you
Who are you to decide what COBOL programmers need or want? :-)
I are one. :)
(I are one, too :-)) Although it is one of several hats I wear...
Precisely. ONE. I wonder why the others are not disturbed by the points
http://publib.boulder.ibm.com/infocenter/cmgmt/v8r3m0/index.jsp?topic=/com.iraise?
Many people are concerned about runtime verification, for example:
bm.sysadmin.hlp/msr10023.htm
http://www.dcmsi.com/jeda2.htmproven wrong.
http://www.diversifiedsoftware.com/
http://e-jcl.com/_wsn/page2.html
http://www.asg.com/products/product_details.asp?code=PJM
You forgot to say Think Outside The Box. Have you evr noticed .. people
who use that
phrase often are the ones most in need of their own advice. :)
I do use that phrase and I have even been known to apply it. On this
occasion, it wasn't appropriate, as there are existing and standard
solutions to the problems you are raising.
AFIK, none of them can validate Cobol programs. I'd be delighted to be
headers.
In order to verify programs, I need ALL externals stored in ELF
because
That is a requirement that is extremely specific and nothing to do with
COBOL.
Yes it does. Cobol programs have many many undeclared EXTERNALs. Other
languages have
almost none. The reason is Cobol ENCOURAGES call through data name
dynamic calls (CALLof fuzzy
thinking about the meaning of 'dynamic call'.
And you came to this conclusion, exactly....... how?
1. Statements like this one from Frank, ".. on the mainframe we use
data-name) almost exclusively."you
It thinks run-time binding is synonymous
with run-time determination of program name. Other languages require
activateto declare all
the programs you might call.
No, they don't. Any program (in ANY Language, and assuming it has the
requisite Authorization) containing a Shell Exec (for example) can
myanything it likes. The same can be done with API calls or DotNET Process
Objects. The mainframe can do it from COBOL, PL/1, RPG, and Assembler, to
mechanism. Callingknowledge, there are probably others.
I'm talking about calling programs using the language's standard call
via the OS API isn't found in ANY language standard, with the possibleexception of
Microsoft. Doing that ties the program to a single OS platform.technique" for
It is a tried, proven, and accepted technique. You find yourself on a
specific installation which does not seem to be well managed (from what
you've written; I'm not qualified to judge the reality, as I don't have
enough information...), you admit to a lack of experience in using this
facility, and then decide that COBOL is wrong to allow it.
1. Calling the OS API is definately NOT "a tried, proven, and accepted
calling application programs. The language's call is the acceptedtechnique.
2. My installation is managed better than most.with
3. As a systems programmer, I have extensive experience with the OS API.
There is nothing wrong with dynamic linkage OR with dynamically deciding
what to CALL; your problem is YOUR lack of experience and familiarity
mostit, and the special needs of the site where you are working. Although
"pre-validating" batch runs may be a useful facility in your case, for
runsites it doesn't gain them much. The batch runs are pretty standard and
becausefrom a standard set of JCL or REXX; the required libraries are easily
identifiable and assignable, and when things crash, it isn't because of a
system problem like a required load module not being available, but
pastof crap data that has never been encountered before, pushing a program
butits breaking point.
If you don't know how to validate batch jobs, just say so.
Yes, there IS OO COBOL, and I used it and loved it for around 12 years,
C#.after using C# there is no comparison. I just finished refactoring and
upgrading some old COBOL, wrapping it in C# and adding new facilities in
IfThe new system is written mainly in C# but calls some COBOL components.
80,000the entire system had been written in COBOL it would have been around
100,000 lines of code. Instead it is around 5000 lines of COBOL and 9500
lines of C#... (It was enthusuastically received in Melbourne when I
delivered it two days ago...) Small, efficient, utilising some of the
Jobscomponents available through the DotNET framework.
And why would you need 80,000 components? This now comes
down to an Administrative responsibility. For example, if there are rules
about how components get assigned to subsytems, the chaos is diminished.
running certain systems will only reference components pertinent to thosemanageable,
systems, and common libraries used for common components. It is
but it needs ot be managed. If you DON't manage it, it is hardly fair toversion of your
blame the COBOL language...
Couldn't Fujitsu's COBOL For .NET call the same componnts? If yes, a Cobol
C# would measure about the same 9500 lines.led
The point is that it wasn't COBOL's ability to make dynamic CALLs that
to the rise of Java...
Being stuck in the 1980s caused the downfall of Cobol.
.
- Follow-Ups:
- Re: COBOL's Influence on C
- From: Michael Mattias
- Re: COBOL's Influence on C
- References:
- Re: COBOL's Influence on C
- From: Charles Hottel
- Re: COBOL's Influence on C
- From: Judson McClendon
- Re: COBOL's Influence on C
- From: Rick Smith
- Re: COBOL's Influence on C
- From: Robert
- Re: COBOL's Influence on C
- From: tlmfru
- Re: COBOL's Influence on C
- From: Robert
- Re: COBOL's Influence on C
- From: Richard
- Re: COBOL's Influence on C
- From: Robert
- Re: COBOL's Influence on C
- From: Pete Dashwood
- Re: COBOL's Influence on C
- From: Robert
- Re: COBOL's Influence on C
- From: Pete Dashwood
- Re: COBOL's Influence on C
- From: Robert
- Re: COBOL's Influence on C
- Prev by Date: Re: COBOL's Influence on C
- Next by Date: Re: COBOL's Influence on C
- Previous by thread: Re: COBOL's Influence on C
- Next by thread: Re: COBOL's Influence on C
- Index(es):
Relevant Pages
|