home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource1 / chint / useful22.hnt < prev    next >
Text File  |  1993-10-29  |  3KB  |  70 lines

  1. strptr nextCharNum(strptr sout,
  2.                    int fno, int kno, int charlen, int numlen,
  3.                    strptr startstr)
  4. /***************************************************************************/
  5. /* This function is designed to determine the next number for a key field  */
  6. /* that is a combination of characters followed by numbers.  The caller    */
  7. /* passes in the character part of the key and the function determines the */
  8. /* next unused number begining with that character sequence.               */
  9. /*                                                                         */
  10. /* "sout" is the destination string.                                       */
  11. /* "fno" and "kno" are the File an Key numbers respectively.               */
  12. /* "charlen" is the length of the character part of the key.               */
  13. /* "numlen" is the length of the numeric part of the key.                  */
  14. /* "startstr" is the character part of the key to start with.              */
  15. /*                                                                         */
  16. /* For Example:--   charlen  numlen  start str   last key    next key      */
  17. /*                  -------  ------  ----------  ----------  ----------    */
  18. /*                     3        5    abc         abc00123    abc00124      */
  19. /*                     1        6    z           e000159     z000001       */
  20. /*                                                                         */
  21. /* A call to this function might look like :--                             */
  22. /*         nextCharNum(MYAPP1.CHARNUMFIELD,1,2,1,6,'z');                   */
  23. /*                                                                         */
  24. /***************************************************************************/
  25. {
  26.   int i;
  27.   bool savok;
  28.   long tr;
  29.   keystr tk;
  30.  
  31.   savok = ok;
  32.   trim(sout,startstr);
  33.   strconcat(tk,sout,"\xff",NULL);
  34.   searchkey(idxkey[fno][kno],&tr,tk);
  35.   prevkey(idxkey[fno][kno],&tr,tk);
  36.   pad(sout,sout,charlen,Right);
  37.   if (!ok || (strsearch(tk,sout) != tk))
  38.     strcat(sout,istr(tk,1,numlen));
  39.   else
  40.     strcat(sout,istr(tk,ival(strcopy(tk,tk,charlen,numlen))+1,numlen));
  41.   for (i=charlen; i<strlen(sout); i++) {
  42.     if (sout[i] == ' ') sout[i] = '0';
  43.   }
  44.   ok = savok;
  45.   return(sout);
  46. }
  47.  
  48.  
  49. /***************************************************************************/
  50. /* This function could be called by using the F2 function key via the      */
  51. /* "custom_key()" function in the standard skeleton.                       */
  52. /*                                                                         */
  53. /* You might have an editable field, say with edit sequence 12, in window 1*/
  54. /* of file 1.  This would be a "C"haracter field and could have an input   */
  55. /* picture like  A-6# and could be the second key for file 1.              */
  56. /*                                                                         */
  57. /* You would copy the standard skeleton to a new name then modify the code */
  58. /* in Custom_Key to look something like this :--                           */
  59. /***************************************************************************/
  60.  
  61. bool custom_key(int scr, int fno, int *fld, uchar *key)
  62. {
  63.     bool tb;
  64.  
  65.   ⁿCODEDISPⁿ
  66.   if ((fno == 1) && (scr == 1) && (*fld == 1) && (*key == F2))       /*NEW*/
  67.     nextCharNum(MYAPP1.CHARNUMFIELD,1,2,1,6,"z");                    /*NEW*/
  68.   return(False);
  69. }
  70.