Require both? That irritates BOTH groups, and seems to have the weaknesses
of both. I must be missing what you're saying...


On Fri, Jun 28, 2013 at 9:40 PM, David Crayford <[email protected]> wrote:

> Why not do both? Use lengths and make sure the string is null terminated.
> That's how std::string works in C++ where you can call c_str() to return a
> null terminated string.
>
> On 29/06/2013, at 9:15 AM, zMan <[email protected]> wrote:
>
> > Right, but these kids don't seem to be. The argument I'm getting is "OK,
> > but even if we pass an explicit length, people will assume the return is
> > null-terminated". I say, "They'll learn"...
> >
> >
> > On Fri, Jun 28, 2013 at 8:29 PM, Charles Mills <[email protected]> wrote:
> >
> >> Yes, character arrays and an explicit length. C programmers are quite
> used
> >> to this, viz. memcpy() etc.
> >>
> >> Charles
> >>
> >> -----Original Message-----
> >> From: IBM Mainframe Discussion List [mailto:[email protected]]
> On
> >> Behalf Of zMan
> >> Sent: Friday, June 28, 2013 12:53 PM
> >> To: [email protected]
> >> Subject: Theology question: Parameter formats
> >>
> >> Suppose you're defining an API, to be callable from multiple languages,
> >> including C. You believe/assume that C will be the most common language
> on
> >> non-z platforms (probably reasonable, FSVO "reasonable"), but you also
> need
> >> to be callable on z.
> >>
> >> Would you:
> >> a) Design the API to pass data/length pairs
> >> b) Use null-terminated strings to keep the C people happy, and have to
> >> create some sort of layer for languages like COBOL to keep usage from
> that
> >> world sane?
> >>
> >> (Yes, I know about z' variables in COBOL, but people aren't used to and
> in
> >> my experience aren't fond of those. And there are a lot of languages out
> >> there to consider besides COBOL!)
> >>
> >> My contention is that C folks can surely understand the concept of
> passing
> >> a
> >> length, especially since C validates parameters -- that is, if a C
> person
> >> might expect to call SOMEFUNCTION(char*, char*)
> >>
> >> and instead the function definition is
> >> SOMEFUNCTION(char*, int*, char*, int*)
> >> they shouldn't exactly be confused. Surely they understand the
> *concept* of
> >> a length.
> >>
> >> But people are whining: "But this is how C works -- that's what strings
> >> are!".
> >>
> >> How do most other APIs deal with this? I've not really written
> applications
> >> this century (or, to be honest, the last one) -- always done systems
> stuff.
> >>
> >> As part of this discussion, I've had the epiphany that people don't
> >> *expect* to be able to call existing code from random languages--they
> think
> >> there will need to be some kind of shim layer. So they're quite
> surprised
> >> that as z folks, we expect an API to be callable from pretty well any
> >> language (modulo pathologies like COBOL's inability to do dynamic memory
> >> allocation).
> >>
> >> ----------------------------------------------------------------------
> >> For IBM-MAIN subscribe / signoff / archive access instructions,
> >> send email to [email protected] with the message: INFO IBM-MAIN
> >>
> >
> >
> >
> > --
> > zMan -- "I've got a mainframe and I'm not afraid to use it"
> >
> > ----------------------------------------------------------------------
> > For IBM-MAIN subscribe / signoff / archive access instructions,
> > send email to [email protected] with the message: INFO IBM-MAIN
>
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to [email protected] with the message: INFO IBM-MAIN
>



-- 
zMan -- "I've got a mainframe and I'm not afraid to use it"

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to