home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / SOURCE / CSSRC / FLDPULLL.C < prev    next >
C/C++ Source or Header  |  1990-03-28  |  1KB  |  57 lines

  1. /*
  2.     fldpulll.c        5/11/88
  3.  
  4.     % field_PullLeft
  5.  
  6.     C-scape 3.2
  7.     Copyright (c) 1986, 1987, by Oakland Group, Inc.
  8.     ALL RIGHTS RESERVED.
  9.  
  10.     Revision History:
  11.     -----------------
  12.      3/28/90 jmd    ansi-fied
  13. */                    
  14.  
  15. #include "field.h"
  16.  
  17. char field_PullLeft(field_type f, int fpos)
  18. /*
  19.     modifies:   the field.
  20.     effects:    deletes the character at fpos, pulls in the characters to the
  21.                    left:  
  22.                 
  23.                 |  helxlo mom|
  24.                       ^
  25.                 |   hello mom|
  26.                       ^
  27.     returns:    the deleted character
  28. */
  29. {
  30.     char     del_char;
  31.     int     recpos;
  32.  
  33.     /* Remember the deleted character (assumes null chars exist
  34.      * past right end). 
  35.      */
  36.     del_char = f->record[fpos];
  37.  
  38.     /* slide the record and merge */
  39.     for (recpos = fpos; recpos > 0; recpos--) {
  40.         f->record[recpos] = f->record[recpos-1];
  41.         if (f->merge != NULL) {
  42.             f->merge[f->r2m[recpos]] = (f->record[recpos-1] != '\0') ? 
  43.                                         f->record[recpos-1] :
  44.                                         MRGPADCHAR;
  45.         }
  46.     }
  47.  
  48.     /* put a blank at the start of the field */
  49.      f->record[0] = RECPADCHAR;
  50.     if (f->merge != NULL) {
  51.         f->merge[f->r2m[0]] = MRGPADCHAR;
  52.     }
  53.  
  54.     return(del_char);
  55. }
  56.  
  57.