home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / xbase / library / clipper / rettig / source / blank.c < prev    next >
C/C++ Source or Header  |  1990-10-21  |  3KB  |  93 lines

  1. /*********
  2. *
  3. * BLANK.C
  4. *
  5. * by Tom Rettig
  6. * modified by Leonard Zerman
  7. *
  8. * Placed in the public domain by Tom Rettig Associates, 10/22/1990.
  9. *
  10. *  Syntax: BLANK( <exp> )
  11. *  Return: Empty value of parameter passed:
  12. *          TYPE   RETURN          NOTE
  13. *          ----   --------------- ----------------------------------
  14. *             L   .F.             logical type
  15. *             N   0.00            numeric type
  16. *             D   '  /  /  '      date type
  17. *             C   "..."           len(<exp>) blank spaces
  18. *             C   "  :  :  "       8 byte,  6 digit time string type
  19. *             C   "     -    "    11 byte, 10 digit zip code type
  20. *             C   "(   )   -    " 13 byte, 10 digit telephone type
  21. *             C   "   -  -    "   11 byte,  9 digit social security number
  22. *          Unchanged <exp> if out of memory.
  23. *********/
  24.  
  25. #include "trlib.h"
  26.  
  27. TRTYPE blank()
  28. {
  29. static char *blanks[] = { "00000000",       /* date string makes '  /  /  ' */
  30.                           "  :  :  ",       /* time */
  31.                           "     -    ",     /* zip */
  32.                           "(   )   -    ",  /* phone */
  33.                           "   -  -    "     /* social security */
  34.                         };
  35.    static char funcname[] = { "blank" };
  36.    char *instr, *ret;
  37.    int len, i;
  38.  
  39.    if ( PCOUNT == 1 )
  40.    {
  41.       if ( ISLOG(1) )
  42.          _retl( FALSE );
  43.       else
  44.       if ( ISNUM(1) )
  45.          _retnd( 0.0 );
  46.       else
  47.       if ( ISDATE(1) )
  48.          _retds( blanks[0] );
  49.       else
  50.       if ( ISCHAR(1) )
  51.       {
  52.          instr = _parc(1);
  53.                                /* _tr_strcmp() returns NULL if equal */
  54.          if ( VALIDTIME(instr) || !( _tr_strcmp(instr,blanks[1]) ) )
  55.             _retc( blanks[1] );
  56.          else
  57.          if ( ( VALIDZIP1(instr) && VALIDZIP2(instr) ) ||
  58.               !( _tr_strcmp(instr,blanks[2]) ) )
  59.             _retc( blanks[2] );
  60.          else
  61.          if ( ( VALIDPHON1(instr) && VALIDPHON2(instr) && VALIDPHON3(instr) ) || 
  62.               !( _tr_strcmp(instr,blanks[3]) ) )
  63.             _retc( blanks[3] );
  64.          else
  65.          if ( ( VALIDSS1(instr) && VALIDSS2(instr) ) || 
  66.               !( _tr_strcmp(instr,blanks[4]) ) )
  67.             _retc( blanks[4] );
  68.          else
  69.          {
  70.             /* character string without defined format */
  71.             len = _tr_strlen(instr);
  72.             ret = _tr_allocmem( (unsigned)(len+1));
  73.             if ( ret )     /* this branch must be last */
  74.             {
  75.                for ( i=0; i<len; i++ )
  76.                   ret[i] = SPACEC;
  77.                ret[i] = NULLC;
  78.                _retc( ret );
  79.                _tr_freemem( ret,(unsigned)(len+1));
  80.             }
  81.             else
  82.                _retc( _tr_errmsgs(funcname,E_ALLOC) );
  83.          }
  84.       }
  85.       else
  86.          _retc( _tr_errmsgs(funcname,E_SYNTAX) );
  87.    }
  88.    else
  89.       _retc( _tr_errmsgs(funcname,E_SYNTAX) );
  90. }
  91. /* eof */
  92.  
  93.