home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol064 / integer.pas < prev    next >
Pascal/Delphi Source File  |  1984-04-29  |  962b  |  60 lines

  1. PROGRAM xint;{$P}
  2. {$C-}
  3. {$M-}
  4. {$F-}
  5. {$I+}
  6. TYPE
  7. $STRING0 = STRING 0;
  8. $STRING80= STRING 80;
  9. $STRING255 = STRING 255;
  10.  
  11. VAR
  12. NUMBER:INTEGER;
  13. DATA:$STRING80;
  14.  
  15. PROCEDURE SETLENGTH(VARX:$STRING0;Y:INTEGER);EXTERNAL;
  16. FUNCTION LENGTH(X:$STRING255):INTEGER;EXTERNAL;
  17.  
  18. {the following function converts a string to an integer.
  19. as written, the string has a maximum size of 80 char.  
  20. requires pascal/z's external function: length}
  21.  
  22. FUNCTION STRTOINT (STR:$STRING80):INTEGER;
  23. LABEL 1;
  24.  
  25. VAR
  26. I,LEN,SIGN,VAL:INTEGER;
  27.  
  28. BEGIN
  29. VAL:=0;
  30. LEN:=LENGTH(STR);
  31. I:=1;
  32. SIGN:=1;
  33.  
  34. IF LEN = 0 THEN    GOTO 1;
  35.  
  36. REPEAT
  37.  
  38.     CASE STR[I] OF
  39.  
  40.      '-' : SIGN:=-1; 
  41.      '.' : GOTO 1;
  42.  
  43.     '0','1','2','3','4','5','6','7','8','9':
  44.         VAL:=(VAL * 10) + (ORD(STR[I]) - 48); {48 = ORD OF 0}
  45.  
  46.        END; {OF CASE}
  47.  
  48. I:=I+1;
  49.  
  50. UNTIL I > LEN;
  51.  
  52.  
  53. 1: { Exit immediately upon detection of a fatal error.}
  54.  
  55. STRTOINT:=SIGN * VAL;
  56. END; {OF PROCEDURE}
  57.  
  58.  
  59. BEGIN         
  60. END.