home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / pibsoft / terminal / source / substr.mod < prev    next >
Encoding:
Text File  |  1987-11-10  |  2.5 KB  |  50 lines

  1. (*--------------------------------------------------------------------------*)
  2. (*                 Substr -- Get substring of a string                      *)
  3. (*--------------------------------------------------------------------------*)
  4.  
  5. FUNCTION Substr( S : AnyStr; IS : INTEGER; NS: INTEGER ) : AnyStr;
  6.  
  7. (*--------------------------------------------------------------------------*)
  8. (*                                                                          *)
  9. (*    Function: Substr                                                      *)
  10. (*                                                                          *)
  11. (*    Purpose:  Takes substring of a string                                 *)
  12. (*                                                                          *)
  13. (*    Calling Sequence:                                                     *)
  14. (*                                                                          *)
  15. (*       Sub_String := Substr(  S: Anystr;                                  *)
  16. (*                             IS: INTEGER;                                 *)
  17. (*                             NS: INTEGER ): AnyStr;                       *)
  18. (*                                                                          *)
  19. (*          S   --- String to get substring from                            *)
  20. (*          IS  --- Starting character in S of substring to extract         *)
  21. (*          NS  --- Number of characters to extract                         *)
  22. (*                                                                          *)
  23. (*    Calls:  Copy                                                          *)
  24. (*                                                                          *)
  25. (*    Remarks:                                                              *)
  26. (*                                                                          *)
  27. (*       This routine handles null strings which COPY doesn't like.         *)
  28. (*                                                                          *)
  29. (*--------------------------------------------------------------------------*)
  30.  
  31. VAR
  32.    L : INTEGER;
  33.    L0: INTEGER;
  34.  
  35. BEGIN (* Substr *)
  36.                                    (* Keep all strings in proper range *)
  37.    L0 := LENGTH( S );
  38.    L  := L0 - IS + 1;
  39.  
  40.    IF( L < NS ) THEN
  41.       NS := L;
  42.                                    (* Extract substring or return null string *)
  43.  
  44.    IF ( NS <= 0 ) OR ( IS < 1 ) OR ( IS > L0 ) THEN
  45.       Substr := ''
  46.    ELSE
  47.       Substr := COPY( S, IS, NS );
  48.  
  49. END   (* Substr *);
  50.