JOB_NAME
Syntax |
JOB_NAME title$ |
Location |
SMS |
Although most Jobs have a name given to them by the programmer, there are three main exceptions to this rule:
Minerva MultiBASICs have a job name beginning with the two letters ‘SB’ followed by a number.
The main SuperBASIC interpreter has a job name equivalent to a null string (“”) means that no name is shown under the JOBS command. QPAC 2 changes this in its menus to ‘SuperBASIC’ to identify this Job. You will also notice that when you put Job 0 to sleep (using <ALT><SHIFT><F1> ), under SMS the Button is given the name ‘System’.
SMS’s multiple SBASIC interpreters are all given the name SBASIC and there is no way of distinguishing one copy from another.
This command allows you to set the name of a multiple SBASIC job under SMS to the specified title$. It has no effect on a compiled program, or on the main Interpreter (Job 0).
Example
It can be necessary to include code within a program which caters for different situations depending on whether the program is being run under an Interpreter or has been compiled. It is not sufficient to test the name of the job, nor the job number, as this can be different on various setups. Luckily, both Minerva and SMS allow you to discover whether a Job is an interpreter (other than Job 0).
Minerva sets bit 6 in offset HEX(‘16’) of the Job’s Header;
SMS places the four letters ‘SBAS’ at offset HEX(‘1E4’) of the Job’s header.
The following example uses these facts to decide what setup the program is running on:
100 vs$=VER$:prog_name$='TESTER'
110 IS_COMPILED=0:pass$=''
120 IF vs$<>'HBA' AND vs$<>'JSL1'
130 IF JOB$(-1)<>'':IS_COMPILED=1
140 ELSE
145 IF JOB$(-1)<>''
146 TJob=JBASE(-1)
147 IF vs$='HBA'
150 JOB_NAME prog_name$
160 IF PEEK$(TJob+HEX('1e4'),4)<>'SBAS': IS_COMPILED=1
165 ELSE
170 TByte=PEEK(TJob+HEX('16'))
180 IF NOT (TByte && 2^6): IS_COMPILED=1
182 END IF
185 END IF
190 END IF
200 IF IS_COMPILED
210 OPEN #1,con_448x200a32x16:PAPER 0:CLS
220 PRINT 'This program has been compiled'
230 pass$=cmd$
240 ELSE
250 IF JOB$(-1)<>''
260 OPEN #1,con_448x200a32x16
270 ELSE
280 WINDOW 448,200,32,16
290 END IF
300 PAPER 0:CLS:PRINT 'This program is running under an interpreter.'
310 IF JOB$(-1)=''
320 INPUT 'Enter Command String: ';pass$
330 ELSE
340 pass$=cmd$
345 IF pass$='':INPUT 'Enter Command String: ';pass$
350 END IF
360 END IF
370 IF pass$='':pass$='UNDEFINED'
380 PRINT 'Command String was ';pass$
390 PAUSE
400 IF IS_COMPILED=0:IF JOB$(-1)=prog_name$:QUIT
410 IF IS_COMPILED=0:IF JOB$(-1)<>'':CLOSE #1
Unfortunately, we do not know of any way of testing whether a MultiBASIC or multiple SBASIC interpreter was started up using the EX command or not (if not, then the CMD$ will need to be entered).
CROSS-REFERENCE
See SBASIC and MB, about the multiple interpreters provided by Minerva and SMS. JOBS and NXJOB contain more information on current jobs. Compilers normally include their own methods of setting the correct job name. You may want to use DEVTYPE to test if a channel is open if a program is to run correctly under both Job 0 and a multiple SBASIC.