Some 20 years ago, it became clear that C strings were not as safe, nor
as fast, as strings in PL/I,  Assembler or Pascal.

The primary reasons are that one needs to find the current length of a
string before or during a copy process - this is very time consuming.

Secondly, there is no way of determining the maximum length of a string,
and therefore when copying to a string, it is easy to over-write
adjacent storage with often disastrous consequences, including the
deliberate introduction of viruses.


Decades have passed and the C string problem continues.  Buffer
over-runs are just part of the story, and the bugs that can be
introduced - the safety problem is still with us all and it has come
back to bite all of us on the lower part of our anatomy, over and over
again.

I have spent some years studying this problem and have developed some
User friendly C macros that solve the problem.

These solutions do enhance the speed and safety aspects of all "C"
programs - these benefits of speed and safety can be passed on to your
users.

The main benefits are:

   * Increased speed (up to 20 times for some string handling)
   * More reliability (strings cannot overwrite adjacent storage)
   * Easier coding and debugging (consistent set of macros)
   * Easier external variables

Here is a very short example:

  dcl (op,charvar,253," ",ext);   // Variable 'op' is defined
//            as an External variable - Max length of  253 characters.
  dcl (symbolic,charfixed,8,"        ",ext);  // Fixed length of 8

  cpylit(op, "This is a 30 character string ");
  cat(op,op);     /* Concatenate variable op with it self.  Now 60
                       characters */

  cpy(symbolic,op);  /* Truncates it to 8 characters */

  cpy(op,symbolic);    /* Copy it back.   */

I invite you download the macros and code at
http://members.ozemail.com.au/~oscarptyltd/fastsafe.html where a fuller
discussion can be found.



Clement Clarke



 ,-._|\  Clement V. Clarke - Author Jol, EASYPANEL, OSCAR, 370TO486
/  Oz  \ Web: www.ozemail.com.au/~oscarptyltd
\_,--.x/ 38 Kings Park Road, West Perth, AUSTRALIA, 6005.
      v  Tel (61)-8-9324-1119, Mob 0401-054-155.

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

Reply via email to