Q(uick)BASIC Statement: SYSTEM

Quick View

SYSTEM

A statement that closes all open files and returns control to the operating system

Worth knowing

Useful and cross-version information about the programming environments of QBasic and QuickBasic.

Syntax
  • SYSTEM
Description/Parameter(s)
Note: Entering a SYSTEM statement in the Immediate window terminates QBasic.
Syntax
  • SYSTEM
Description/Parameter(s)

When a SYSTEM command is executed, all files are closed, and BASIC exits to the operating system (for stand-alone executable programs), or stops program execution (if the program is run in the QuickBASIC environment).

Note: A program containing a SYSTEM statement exits to the operating system if run from the QuickBASIC command line with the /RUN option.
Entering a SYSTEM statement in the Immediate window terminates QuickBASIC.

Differences from BASICA

  • END and SYSTEM are distinct in BASICA but act identically in QuickBASIC.
Syntax
  • SYSTEM (n%)
Description/Parameter(s)
n% Returns control to the operating system and returns the value n% to the operating system. If n% is omitted, a value of 0 is returned to the operating system.
  • The value n% can be used by DOS or OS/2 batch files or by non-BASIC programs. Untrapped errors and fatal errors set the value of n% to -1.

Usage Notes

  • In a stand-alone program, SYSTEM returns to the operating system and closes all files; in the QBX environment, SYSTEM stops program execution and closes all files.

Important

  • A program containing a SYSTEM statement exits to the operating system if run from the QBX command line with the /RUN option.
  • Entering a SYSTEM statement in the Immediate window terminates BASIC.

Differences from BASICA

  • END and SYSTEM are distinct in BASICA but act identically in the current version of BASIC.
Example

The program uses the ON ERROR statement to enable error trapping. The program attempts to write a large file to the disk. If an error occurs, control is passed to a handling routine, and the ERR function is used to determine an appropriate message to display. The ERROR, ERR, and RESUME statements are used to exit the handling routines, and the END, STOP, and SYSTEM statements demonstrate ways to exit a program.

DECLARE SUB ErrorMessage (Message$) DECLARE SUB WriteBigFile (Filenum%) ON ERROR GOTO ErrHandler CLS PRINT "This program will attempt to write a large file to a disk drive" PRINT "you select. The file will be erased when the program ends." PRINT DO INPUT "Which drive"; DR$ DR$ = UCASE$(DR$) LOOP UNTIL LEN(DR$) >= 1 AND LEN(DR$) <= 2 AND DR$ >= "A" AND DR$ <= "Z" IF LEN(DR$) > 1 THEN IF RIGHT$(DR$, 1) <> ":" THEN DR$ = LEFT$(DR$, 1) + ":" END IF ELSE DR$ = DR$ + ":" END IF 'Put together a complete file specification. FileSpec$ = DR$ + "BIGFILE.XXX" 'Get the next available file number. Filenum% = FREEFILE 'Try to open the file. OPEN FileSpec$ FOR OUTPUT AS Filenum% WriteBigFile Filenum% CLOSE Filenum% CLS PRINT "Everything was OK. No errors occurred." PRINT "Deleting the file that was created." KILL FileSpec$ 'Same as END, returns to operating system. SYSTEM ErrHandler: SELECT CASE ERR CASE 52 'Bad file name or number. END CASE 53 'File not found. RESUME NEXT CASE 57 'Device I/O error. ErrorMessage "You should probably format the diskette." END CASE 64 'Bad File Name. ErrorMessage "The drive name you specified was not correct." END CASE 68 'Device unavailable. ErrorMessage "The drive you named is unavailable." END CASE 71 'Drive not ready. ErrorMessage "The drive was not ready. Check the drive!" END CASE ELSE ErrorMessage "An unexpected FATAL error has occurred." STOP END SELECT SUB ErrorMessage (Message$) ON LOCAL ERROR GOTO MessageError CLS PRINT Message$ PRINT "Cannot continue." PRINT PRINT "Press any key to exit." DO LOOP WHILE INKEY$ = "" EXIT SUB MessageError: RESUME NEXT END SUB SUB WriteBigFile (Filenum%) ON LOCAL ERROR GOTO LocalHandler TEXT$ = STRING$(1024, "A") FOR I% = 1 TO 400 PRINT #Filenum%, TEXT$ NEXT I% EXIT SUB LocalHandler: SELECT CASE ERR CASE 61 'Disk full. ErrorMessage ("There is no room remaining on the disk.") KILL "BIGFILE.XXX" END CASE ELSE ERROR ERR END SELECT END SUB