home *** CD-ROM | disk | FTP | other *** search
- ' BATINP.BAS
- ' by Tika Carr
- '
- ' Donated to the public domain
- ' No warranties or guarantees are expressed or implied.
- '
- 'Based on ENVIRON.BAS posted by Jack Hudgions to the QUIK_BAS Echo
- '
- 'Requires: QB.QLB, QB.LIB and QB.BI for QuickBasic 4.5 or
- ' QBX.QLB, QBX.LIB and QBX.BI for PDS/Basic7
- ' (Start QuickBasic with: QB /L QB.QLB)
- 'Credits:
- ' Douglas Lusher, Fidonet QuickBASIC, 07-11-94
- ' Jack Hudgions, Fidonet QuickBASIC, 12/1996
- '
- '------- Demo Batch File Example: -------
- '
- '@echo off
- 'rem First we must set up the environment to accept a certain amount of
- 'rem characters expected. Here we expect maybe up to 20 characters for
- 'rem a name.
- 'SET BINP=x
- '
- 'echo Please type your name.
- '
- 'rem The next line lets you input characters into that environment
- 'rem variable we just set.
- 'INPUT BINP
- '
- 'echo Hello, %BINP%
- '
- 'rem The next line clears the variable out of the environment table.
- 'SET BINP=
- '
- '------- END BATCH --------
-
- DEFINT A-Z
-
- '$INCLUDE: 'qb.bi'
- DIM RegsX AS RegTypeX
- RegsX.ax = &H352E
- NULL$ = CHR$(0)
-
- LINE INPUT a$
- Env$ = COMMAND$ + "=" + a$
- EqualPtr% = INSTR(Env$, "=")
-
- IF LEN(Env$) = 0 OR INSTR(Env$, NULL$) OR EqualPtr% <= 1 THEN END
- EVar$ = UCASE$(LEFT$(Env$, EqualPtr%))
- EnvVal$ = MID$(Env$, EqualPtr% + 1)
-
- INTERRUPTX &H21, RegsX, RegsX
-
- DEF SEG = RegsX.es
- EnvSeg& = PEEK(&H2C) + PEEK(&H2D) * 256&
- DEF SEG = EnvSeg& - 1
- EnvSize% = (PEEK(3) + PEEK(4) * 256) * 16
- DEF SEG
-
- Tmp$ = SPACE$(EnvSize%)
- DEF SEG = EnvSeg&
- FOR EqualPtr% = 1 TO LEN(Tmp$)
- MID$(Tmp$, EqualPtr%, 1) = CHR$(PEEK(EqualPtr% - 1))
- NEXT
- DEF SEG
- Tmp$ = LEFT$(Tmp$, INSTR(Tmp$, NULL$ + NULL$))
-
- IF LEN(Tmp$) = 1 THEN Tmp$ = ""
-
- 'Mark's modification begin.
- EnvVarPtr% = INSTR(Tmp$, NULL$ + EVar$) + 1
- IF EnvVarPtr% = 0 THEN
- EnvVarPtr% = INSTR(Tmp$, EVar$)
- IF EnvVarPtr% > 1 THEN EnvVarPtr% = 0
- END IF
- ' Mark's modification end.
-
- IF EnvVarPtr% THEN
- NextPtr% = INSTR(EnvVarPtr%, Tmp$, NULL$) + 1
- IF NextPtr% > LEN(Tmp$) THEN
- Tmp$ = LEFT$(Tmp$, EnvVarPtr% - 1)
- ELSE
- Tmp$ = LEFT$(Tmp$, EnvVarPtr% - 1) + MID$(Tmp$, NextPtr%)
- END IF
- END IF
-
- IF LEN(EnvVal$) THEN
- Tmp$ = Tmp$ + EVar$ + EnvVal$ + NULL$ + NULL$
- IF LEN(Tmp$) > EnvSize% THEN END
- ELSE
- Tmp$ = Tmp$ + NULL$
- IF LEN(Tmp$) = 1 THEN
- Tmp$ = Tmp$ + NULL$
- END IF
- END IF
-
- DEF SEG = EnvSeg&
- FOR Ptr% = 1 TO LEN(Tmp$)
- POKE Ptr% - 1, ASC(MID$(Tmp$, Ptr%, 1))
- NEXT
- DEF SEG
-
-