Aren't most un*x files (if that is the proper word) streams, where there is no
length?

I would assume that C++ could have a varchar type where operators would be
defined to properly use these strings.From my recollection that isn't possible
in standard C.

On Tue, 31 Dec 2024 19:01:24 +1100 Clement Clarke <ad...@oscar-jol.com> wrote:

:>Over many years, I have brought up the C string problem.  Both it's speed
:>and safety.  I developed some C macros which improve the situation, however
:>I think that by simply introducing a new file type, say .VB like .EXE, many
:>speed and safety issues can be corrected relatively simply, as well
:>as reducing the electricity and cooling water needed to shunt 5 billion
:>emails around the world each day.
:>
:>The VB format would follow IBM's VB format.  Thus the length of the record
:>would precede the data, and allow records to be moved and copied without
:>constantly searching for binary zeros, or carriage returns and line feeds.
:>
:>My tests have consistently shown that copying strings with C takes a
:>minimum of about 2.5 times longer to copy C terminated strings. Often, the
:>time is greater depending on the compiler and associated routines.
:>
:>I believe implementing such code would be relatively trivial.  And I
:>would also suggest the record length and blocksize be 4 bytes rather than 2
:>bytes.
:>
:>The open routines could look to see if the file or data set is .VB, and if
:>so set a flag.  When a GET or equivalent is issued, then it is a simple
:>matter to read the block if necessary, and load the length of the record
:>and issue an MVCL or equivalent on other machines.
:>
:>Gradually, C and C++ could be changed internally to follow the excellent
:>PL/I practice of having the length of variable length strings at the front
:>of the strings which means searching for string terminators is not
:>necessary.
:>
:>Kind regards, and a Happy New Year to all,
:>
:>Clem Clarke
:>PS: Some further information is at
:>https://start.oscar-jol.com/fast-safe-c-strings
:>
:>
:>
:>
:>
:>Charles Mills kindly suggested that C++ was the answer.  However, I think
:>
:>----------------------------------------------------------------------
:>For IBM-MAIN subscribe / signoff / archive access instructions,
:>send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
Binyamin Dissen <bdis...@dissensoftware.com>
http://www.dissensoftware.com

Director, Dissen Software, Bar & Grill - Israel

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to