home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / PIBTERM / PIBT41S1.ARC / GETENVST.MOD < prev    next >
Encoding:
Text File  |  1988-02-13  |  3.6 KB  |  96 lines

  1. (*----------------------------------------------------------------------*)
  2. (*           GetEnvStr --- get string from DOS environment              *)
  3. (*----------------------------------------------------------------------*)
  4.  
  5. FUNCTION GetEnvStr( Search_String : AnyStr ) : AnyStr;
  6.  
  7. (*----------------------------------------------------------------------*)
  8. (*                                                                      *)
  9. (*     Function:   GetEnvStr                                            *)
  10. (*                                                                      *)
  11. (*     Purpose:    Gets string from DOS enviroment area                 *)
  12. (*                                                                      *)
  13. (*     Calling Sequence:                                                *)
  14. (*                                                                      *)
  15. (*        EnvString := GetEnvStr( Search_String : AnyStr ) : AnyStr;    *)
  16. (*                                                                      *)
  17. (*           Search_String --- String to be searched for                *)
  18. (*           EnvString     --- Resultant string value or null if not    *)
  19. (*                             found.                                   *)
  20. (*                                                                      *)
  21. (*----------------------------------------------------------------------*)
  22.  
  23. TYPE
  24.    DosEnv = ARRAY[0..32767] OF CHAR;
  25.  
  26. VAR
  27.    EnvPtr: ^DosEnv;
  28.    EnvStr: AnyStr;
  29.    Done  : BOOLEAN;
  30.    I     : INTEGER;
  31.    L     : INTEGER;
  32.  
  33. BEGIN (* GetEnvStr *)
  34.                                    (* Add '=' to search string.           *)
  35.  
  36.    Search_String := Search_String + '=';
  37.    L             := LENGTH( Search_String );
  38.  
  39.                                    (* Get address of DOS environment area *)
  40.  
  41.    EnvPtr        := PTR( MemW[ PrefixSeg:$002C ] , 0 );
  42.  
  43.                                    (* Begin loop looking for string *)
  44.    I              := 0;
  45.    Done           := FALSE;
  46.    EnvStr         := '';
  47.    GetEnvStr      := '';
  48.  
  49.    REPEAT
  50.       IF EnvPtr^[I] = #0 THEN
  51.          BEGIN
  52.                                    (* Environment area ends with two      *)
  53.                                    (* successive 0 bytes.                 *)
  54.  
  55.             IF ( EnvPtr^[I+1] = #0 ) THEN
  56.                BEGIN
  57.  
  58.                   Done := TRUE;
  59.  
  60.                   IF ( Search_String = '==' ) THEN
  61.                      BEGIN
  62.                         EnvStr    := '';
  63.                         INC( I , 4 );
  64.                         WHILE( EnvPtr^[I] <> #0 ) DO
  65.                            BEGIN
  66.                               EnvStr := EnvStr + EnvPtr^[I];
  67.                               INC( I );
  68.                            END;
  69.                         GetEnvStr := EnvStr;
  70.                      END;
  71.  
  72.                END;
  73.                                    (* If we found string, get associated  *)
  74.                                    (* value.                              *)
  75.  
  76.             IF ( COPY( EnvStr , 1 , L ) = Search_String ) THEN
  77.                BEGIN
  78.                   GetEnvStr := COPY( EnvStr, SUCC( L ), LENGTH( EnvStr ) - L );
  79.                   Done      := TRUE;
  80.                END;
  81.                                    (* Set current environment string to null *)
  82.             EnvStr := ''
  83.  
  84.          END
  85.       ELSE
  86.                                    (* Not CHR(0) --- append to current    *)
  87.                                    (* environment string being extracted. *)
  88.  
  89.          EnvStr := EnvStr + EnvPtr^[I];
  90.  
  91.       INC( I );
  92.  
  93.    UNTIL Done;
  94.  
  95. END    (* GetEnvStr *);
  96.