home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol134 / paszcode.int < prev    next >
Text File  |  1984-04-29  |  3KB  |  84 lines

  1. FUNCTION inttostr (given: INTEGER;  imode : intmode): intstr;  {$C-R-}
  2.  
  3. {* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
  4. {* Given an integer, and a conversion mode specifier, return a       *}
  5. {* representing the integer's value in display mode.                 *}
  6. {*                                                                   *}
  7. {* Modes:  inone - present a 5-digit number, with left zeroes, in    *}
  8. {*                      positions 2-6 of the string.  Position 1 is  *}
  9. {*                      blank, 7 is the sign (blank or hyphen).      *}
  10. {*         isuplzer - same as inone, but with leading zeroes         *}
  11. {*                      replaced by leading blanks.                  *}
  12. {*         ishortsup - same as isuplzer, but shortened by removing   *}
  13. {*                      all leading and trailing blanks.             *}
  14. {*         icomma - replace leading zeroes with blanks, provide a    *}
  15. {*                      comma if absolute value exceeds 3 digits;    *}
  16. {*                      units in position 6, sign in 7.              *}
  17. {*         ishortcom - same as icomma, but shortened by removing     *}
  18. {*                      all leading and trailing blanks.             *}
  19. {* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
  20.  
  21. CONST
  22.     hyphen   = '-';
  23.     comma    = ',';
  24.     blank    = ' ';
  25.     limiter  = intstrlength + 1;
  26.  
  27. VAR
  28.     tempstr  : intstr;
  29.     string2  : intstr;
  30.     holder   : INTEGER;
  31.     digitn   : 0..9;
  32.     digx     : 1..limiter;
  33. {$L+}
  34. BEGIN {inttostr function}
  35.     setlength(tempstr,intstrlength);
  36.     FOR digx := 1 TO intstrlength DO
  37.       tempstr[digx] := blank;
  38.     IF given<0
  39.       THEN
  40.         BEGIN
  41.           tempstr[intstrlength] := hyphen;
  42.           holder := -given
  43.         END   {then}
  44.       ELSE holder := given;
  45.     FOR digx := intstrlength-1 DOWNTO 2 DO
  46.       BEGIN {for}
  47.         digitn := holder MOD 10;
  48.         tempstr[digx] := CHR(digitn+ord('0'));
  49.         holder := holder DIV 10
  50.       END;  {for}
  51.     IF imode<>inone
  52.       THEN
  53.         BEGIN {then}
  54.           digx := 2;
  55.           WHILE tempstr[digx]='0' DO
  56.             BEGIN {while}
  57.               tempstr[digx] := blank;
  58.               digx := digx+1
  59.             END;  {while}
  60.           IF ((tempstr[3]<>blank) AND ((imode=icomma) OR (imode=ishortcom)))
  61.             THEN
  62.               BEGIN {then}
  63.                 tempstr[1] := tempstr[2];
  64.                 tempstr[2] := tempstr[3];
  65.                 tempstr[3] := comma
  66.               END   {then}
  67.         END;  {then}
  68.     IF ((imode=ishortsup) OR (imode=ishortcom))
  69.       THEN
  70.         BEGIN
  71.           setlength(string2,0);
  72.           digx := 1;
  73.           WHILE tempstr[digx]=blank DO
  74.             digx := digx + 1;
  75.           WHILE ((digx<=intstrlength) AND (tempstr[digx]<>blank)) DO
  76.             BEGIN {while}
  77.               append(string2,tempstr[digx]);
  78.               digx := digx + 1
  79.             END; {while}
  80.           inttostr := string2
  81.         END {then}
  82.       ELSE inttostr := tempstr
  83. END;  {inttostr procedure} {$L+}
  84.