bat * Begin Batch Language Demo * (C)opyright by Seaware Corp. 1982, 1983
bat *                             (C)opyright by Frank Canova  1982, 1983

bat * Send contributions to: Seaware Corp.
bat *                        P.O. Box 1656
bat *                        Delray Beach, FL 33444

bat *---- FEATURES OF THE LANGUAGE USED WITHIN THIS DEMO ARE: ----------------
bat * Standary DOS commands can be intermixed freely with BAT commands.
bat * Like basic, putting things at top is quicker for goto's / loops to find.
bat * Up to 15 chars are allowed for labels, contents of vars, and literals
bat * 10 variables are provided to be passed to/from DOS. They're %0 to %9.
bat * 15 variables are provided for user use only. They're %A to %O.
bat * The variable %R is a return code that any routine can set at [0:04FE]
bat * Note that 'BEGTYPE' & 'BEGSTACK' do not do variable substitution.
bat * BEGTYPE  command can have screen attributes via a '\hex' format.
bat * BEGSTACK command can have timing attributes via a '\hex' format.
bat * Spaces are needed to delimit operators.
bat * Non-spaces will concatenate variables and literals.
bat * STATEOF sets return code based on state of files existance.

bat cls begtype
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º             (C)opyright by Seaware Corp. 1982, 1983                    º
º             (C)opyright by Frank Canova  1982, 1983                    º
º                                                                        º
º  This is User Supported Software ::                                    º
º                                                                        º
º  You  are encouraged to  copy and share this program with other users, º
º  on the  conditions that the program is not  distributed  in  modified º
º  form, that no fee or consideration is charged, and that this notice   º
º  is not bypassed or removed.                                           º
º                                                                        º
º  PRIVATE USERS, If you are using this program and finding it of value, º
º          your contribution ($30 suggested) will be appreciated.        º
º                                                                        º
º  The $30 license fee (per system) is required for COMMERCIAL USERS if  º
º          used in a place of business or put into another product.      º
º                                                                        º
º                    Seaware Corp.                                       º
º                    P.O. Box 1656                                       º
º                    Delray Beach, FL 33444                              º
º                                                                        º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼

End
bat type What is your first name? ==> ;
bat read %8
bat %7 = 27
bat %L =
bat goto -top

bat * number guessing demo *
bat -i.can.count %6 = 5
   bat cls type i am thinking of a two digit number, can you guess it?
   bat -c.loop read %5
   bat if %5 = %7 skip 7
   bat %6 = %6 - 1
   bat if %6 <> 0 skip 2
       bat type boo hisss! the number was %7!
       bat skip 4
   bat if %5 > %7 type try a little lower. you only get %6 more tries.
   bat if %5 < %7 type try a higher number. you get %6 more tries.
   bat goto -c.loop
   bat type great! i was afraid you weren't going to get it!
   bat begtype

A BAT program can create loops and count events. With this you can
sequence through file numbers, or create loops to do retrys in case of
errors. In addition, BAT programs can do simple arithmetic and string
manipulation.

(press any key to continue)
end
bat inkey

bat -top cls type ======== %8's extended batch sampler menu ===========
bat begtype

      \0FC\07 - I can Count

      \0fD\07 - Directory of available programs

      \0fF\07 - Testing for files

      \0fK\07 - Keyboard stack (the invisible fingers)

      \0fS\07 - Display Screen and String operations

      \0fX\07 - Exit


Select an option.
end
bat -entry read %9
bat %7 = %7 + 3
bat * Skiping is quicker than goto's, but only goes forward.
bat if %9 <> d goto -not.d
    bat type enter file.spec for files you would like to see, or press ENTER for all.
    bat read %1
    bat if .%1 = . %1 = *.*
    bat -dirques type Would you like a (S)tandard or (W)ide directory?
    bat inkey %2 | %m = %2 # | if %m = 1 type %2
    bat * Notice you can chain togeather if's, like . . .
    bat if %2 <> s if %2 <> w goto -dirques
    bat %3 =
    bat if %2 = w %3 = /w
    bat cls
    rem  (notice that two parms are passed to dos here. %%1 and %%3)
    dir %1 %3
    bat * Returning to Extended Batch demo *
    bat begtype

This directory was created by using a DOS command within this batch file. Any
DOS command can be mixed freely within lines of the BAT program. By passing
parameters to/from DOS, you can have complete control of how a program
operates. User programs may also set a return code in order to control the
execution of the BAT batch file program.

    Press any key to continue. . .
end
    bat inkey
    bat goto -top

bat -not.d if %9 <> x skip 3
    bat type so long %8....
    bat type p.s. for quickie help, just enter 'bat' from dos.
    bat exit

bat if %9 = c goto -i.can.count

bat if %9 <> f goto -not.f
    bat type enter a file name for me to search for.
    bat read %9
    bat type scanning for file: %9 . . .
    bat stateof %9 |* this will set the return code up (%R)
    bat if %r <> 0 skip 2
    bat    type the file does exist - exactly as typed.
    bat    skip 7
    bat if %r <> 1 skip 2
    bat    type the file does not exist on any drive.
    bat    skip 5
    bat if %r <> 9 skip 2
    bat    type the file name given is invalid.
    bat    skip 2
    bat type the file does exist - but was found on the %r drive.
    bat type to properly find this file, the complete filename would be %9
    bat begtype

       File searching is done by a command called STATEOF.

If the file was there, we could direct a program to use it, even if it wasn't
on the specific diskette drive that the operator was expecting.

If the file was not there, we could have printed out an error message to the
operator, or we could have run an alternate program in order to create the
missing file.

Press any key to continue . . .
end
    bat inkey
    bat goto -top

bat -not.f if %9 <> k goto -not.k
    bat cls begtype
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º                                                                             º
º       The keyboard stack can answer questions to programs automatically.    º
º       For example, this DOS command can be responded to from the stack.     º
º                                                                             º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼
end
    bat begstack
This text is actually being typed for you from the keyboard stack.
All keys, including control keys and function keys can come from this stack.
Keystrokes can \ff\10even \ff\10have \ff\10delayed \ff\10typing.
\1a
end
rem ... Below is the DOS command that will read the keyboard stack.
copy con: nul:
bat *returning from DOS command*
bat begtype

(press any key to continue)
end
bat inkey
bat goto -top

bat -not.k if %9 <> s goto -not.s
    bat cls begtype
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º                                                                             º
º       All sorts of screen attributes can be printed on the screen.          º
º                                                                             º
º   On monochrome display you see:            On color display you see:       º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼

        \04Normal                               Red on Black  \07
        \0fHigh Intensity                       High Intensity\07
        \21Underlined                           Blue on Green \07
        \85Flashing Normal                      Flashing Magenta on Black\07

                And \0fmany\07 other combinations!


\1b[33;44m Users of DOS 2.0 ANSI.SYS can also control the display. \1b[0m


                (press any key to continue)
end
    bat inkey
    bat cls
    bat -rd.name1 if .%8 <> . skip 3
    bat   type i didn't catch your first name, what was it?
    bat   read %8
    bat   goto -rd.name1
    bat type i know that your first name is %8
    bat -rd.name2 if .%L <> . skip 3
    bat   type i didn't catch your last name, what was it?
    bat   read %L
    bat   goto -rd.name2
    bat type
    bat type i am using your name as two strings to work with.
    bat type
    bat type comparisons can be made . . .
    bat if %8 = %L type the strings are equal.
    bat if %8 <> %L type the strings are not equal.
    bat * notice a '.' will make sure that null entries can be found
    bat type
    bat type Strings contents can be manipulated . . .
    bat type CONCATENATION.. They can be combined to form %8%L
    bat type CONCATENATION.. or to form %L%8.
    bat %I = %8 $ 1 1
    bat %I = %I.%L $ 1 3
    bat %H = %8 #
    bat type SUBSTRINGS..... Your initials would be %I.
    bat type LENGTHS........ Your first name has %H letters.
    bat begtype

 Strings will be truncated at 15 characters and may be passed back
 and forth from DOS. There are 10 variables for strings which may
 operate with DOS, and 15 which can be used even between
 executing BAT programs. There are another 5 variables which
 have predefined (fixed) contents to give status, etc. String operations
 and comparisons can be done as well.

(Press any key to continue)
end
    bat inkey
    bat goto -top

bat -not.s BEGTYPE

You did not select a valid option.
Press \0FC, D, F, S or X\07.
END
bat goto -entry
