if DRIVE_SCOPE = 'LOCAL' & num_drives = 2 then if drive_size.2 = 0 | drive_size.2 = ' ' | drive_size.2 = '' then num_drives = 1
if num_drives = 1 then signal set_drive /*Only 1 drive. Skip prompt*/
/*Display the available drives and prompt for drive to install*/
say ' '
say 'The following hard drives were found on this system:'
say ' '
say 'Drive Available Space'
say '----- ---------------'
valid_drives = 'C'
do i = 1 to num_drives
if drive_size.i > 0 then do
say ' 'substr(drive.i,1,1)' 'trunc(drive_size.i /1000000,2) 'MB'
valid_drives = valid_drives||substr(drive.i,1,1)
end
end
say ' '
say 'The installation requires approximately 4 MB of hard drive space.'
ask_drive:
say 'Type the letter of the drive you want to use for this installation,'
say 'and then press Enter.'
pull drive_entered /*Get a drive letter from the user*/
/*Validate drive entered*/
if drive_entered = '' | pos(substr(drive_entered,1,1),valid_drives) = 0 | length(drive_entered) >2 | (length(drive_entered) = 2 & substr(drive_entered,2,1) <> ':') then do
if drive_entered = '' then say 'You did not enter a drive letter. Please try again.' ; else say 'You entered 'drive_entered'. This is not a valid drive letter. Please try again.'
signal ask_drive
end
/*Set the drive to use*/
set_drive:
if num_drives = 1 then INST_DRIVE = 'C:' ; else INST_DRIVE = substr(drive_entered,1,1)':'
/*Check size on INST_DRIVE*/
check_drive:
if strip(substr(SysDriveInfo(INST_DRIVE),5,11),t) < CHECK_SIZE then do
if num_drives = 1 then do
say ' '
say 'Your system has only one hard drive, and it has only 'trunc(drive_size.1 /1000000,2) 'MB'
say 'of available space. This installation requires 'trunc(strip(substr(check_size /1000000,1,4),t),2) 'MB.'
say 'The installation cannot continue.'
if restart = 'RESTART' then call end_inst
exit
end
else do
say 'There in not enough space on drive 'drive_entered'.'
say 'Do you want to pick another drive? (Y/N)'
pull try_again
if try_again = 'N' then exit
else if try_again = 'Y' then signal ask_drive ; else signal check_drive
end
end
/*See if directory prompt required, If not, jump to dir_test*/
prompt_dir:
if DIR_PROMPT = 'N' | DIR_PROMPT = 'n' then do /*No directory prompt*/
def_dir = 'Y'
TEST_DIR = space(strip(INST_DIR,B,'\'),0)
signal dir_test
end
/*Prompt for a directory*/
ask_dir:
say ' '
say 'The default installation directory is: 'INST_DIR
say 'Press Enter to accept the default directory, or type the name'
say 'of another directory (or path) and then press Enter.'
pull user_dir
if user_dir = '' then do /*User accepted the default directory*/
def_dir = 'Y'
TEST_DIR = space(strip(INST_DIR,B,'\'),0)
end
else do
def_dir='N'
TEST_DIR = space(strip(user_dir,B,'\'),0)
end
/*Validate directory path*/
dir_test:
if TEST_DIR = '' then do
say 'This installer does not support installations to a root directory.'
say 'Please enter another directory.'
signal ask_dir
end
if pos('\\',TEST_DIR) <> 0 then do
say 'The path you entered contains two backslashes (\\) together.'
say 'This is not a valid path. Please enter another path.'
signal ask_dir
end
if pos('\',TEST_DIR) = 0 then do /*Single directory*/
num_dirs = 1
single_dir='Y'
rc=check_dir(TEST_DIR)
end
else do /*Break path into separate directories and test each*/