System Functions

The following system functions are supported by TAFC:

FunctionDescription
SYSTEM(0)Returns the last error code
SYSTEM(1)Returns 1 if output directed to printer
SYSTEM(2)Returns page width
SYSTEM(3)Returns page depth
SYSTEM(4)Returns no of lines to print in current page.
(HEADING statement)
SYSTEM(5)Returns current page number (HEADING
statement)
SYSTEM(6)Returns current line number (HEADING
statement)
SYSTEM(7)Returns terminal type
SYSTEM(8)Returns record length for tape channel 0
SYSTEM(9)Returns CPU milliseconds
SYSTEM(10)Returns 1 if stacked input available
SYSTEM(11)Returns the number of items in an active select
list or 0 if no list is active
SYSTEM(12)Returns 1/1000, ( or 1/10 for ROS), seconds past
midnight
SYSTEM(13)Releases time slice
SYSTEM(14)Returns the number of characters available in
input buffer. Invoking SYSTEM(14)
Causes a slight delay in program execution.
SYSTEM(15)Returns bracket options used to invoke command
SYSTEM(16)Returns current PERFORM/EXECUTE level
SYSTEM(17)Returns stop code of child process
SYSTEM(18)Returns port number or JBCPORTNO
SYSTEM(19)Returns login name or JBASICLOGNAME. If the
system_19_timedate emulation option is set then returns
the number of seconds since midnight December 31, 1967.
SYSTEM(20)Returns last spooler file number created
SYSTEM(21)Returns port number or JBCPORTNO
SYSTEM(22)Reserved
SYSTEM(23)Returns status of the break key
0 Enabled
1 Disabled by BASIC
2 Disabled by Command
3 Disabled by Command and BASIC
SYSTEM(24)Returns 1 if echo enabled, 0 if echo disabled
SYSTEM(25)Returns 1 if background process
SYSTEM(26)Returns current prompt character
SYSTEM(27)Returns 1 if executed by PROC
SYSTEM(28)Reserved.
SYSTEM(29)Reserved.
SYSTEM(30)Returns 1 if paging is in effect (HEADING statement)
SYSTEM(31)Reserved
SYSTEM(32)Reserved
SYSTEM(33)Reserved
SYSTEM(34)Reserved
SYSTEM(35)Returns language in use as a name or number (ROS)
SYSTEM(36)Reserved
SYSTEM(37)Returns thousands separator
SYSTEM(38)Returns decimal separator
SYSTEM(39)Returns money symbol
SYSTEM(40)Returns program name
SYSTEM(41)Returns release number
SYSTEM(42)Reserved
SYSTEM(43)Returns port number of item lock
SYSTEM(44)Returns 99 for jBASE system type
SYSTEM(45)Reserved
SYSTEM(47)Returns 1 if currently in a transaction
SYSTEM(48)Reserved
SYSTEM(49)Returns PLID environment variable
SYSTEM(50)Returns login user id
SYSTEM(51)Reserved
SYSTEM(52)Returns system node name
SYSTEM(53)Reserved
SYSTEM(100)Returns program create information
SYSTEM(101)Returns port number or JBCPORTNO
SYSTEM(102)Reserved
SYSTEM(1000)Returns command line separated by attribute marks
SYSTEM(1001)Returns command line and options
SYSTEM(1002)Returns temporary scratch file name
SYSTEM(1003)Returns terminfo Binary definitions
SYSTEM(1004)Returns terminfo Integer definitions
SYSTEM(1005)Returns terminfo String definitions
SYSTEM(1006)Reserved
SYSTEM(1007)Returns system time
SYSTEM(1008)Returns SYSTEM file path
SYSTEM(1009)Returns MD file path
SYSTEM(1010)Returns Print Report information
SYSTEM(1011)Returns jBASE release directory
path. TAFC_HOME
SYSTEM(1012)Returns jBASE global directory
path. JBCGLOBALDIR
SYSTEM(1013)Returns memory usage (UNIX only):
<1> Free memory small blocks
<2> Free memory large blocks
<3> Used memory small blocks
<4> Used memory large blocks
SYSTEM(1014)Returns relative PROC level
SYSTEM(1015)Returns effective user name. LOGNAME
SYSTEM(1016)Returns tape assignment information
SYSTEM(1017)Returns platform. UNIX, WINNT or WIN95
SYSTEM(1018)Returns configured processors
SYSTEM(1019)Returns system information (uname -a)
SYSTEM(1020)Returns login user name
SYSTEM(1021)TAFC release information:
<1> Major release number
<2> Minor release number
<3> Patch level
<4> Copyright information
SYSTEM(1022)Returns the status of TAFC profiling:
0 no profiling is active
1 full profiling is active
2 short profiling is active
3 jCOVER profiling is active
SYSTEM(1023)Used by STATUS() function
SYSTEM(1024)Retrieves details about last signals
SYSTEM(1025)Returns value of International mode for thread
SYSTEM(1026)Total amount of memory in use formatted with
commas
SYSTEM(1027)Returns directory PROC; Used by WHERE, LISTU
Information about running processes can be obtained
via the PROC jedi....
This JEDI enables retrieval of information from
executing processes and is the interface now used
by the WHERE command...
OPEN SYSTEM(1027) TO PROC ELSE STOP 201, "PROC"
SELECT PROC TO Sel
LOOP
WHILE READNEXT key FROM Sel DO
READ ProcessRecord FROM PROC, key ELSE CRT "Read Error"; STOP
REPEAT
Info for current user can be returned from the
@USERSTATS variable.
Attribute descriptions for Process Records returned
from the PROC Jedi READ interface.
<1> Port number
<2> Number of programs running
<3> Connect time
<4> Process ID
<5> Account name
<6> User name
<7> Terminal name in TAFC format
<8> Terminal name in UNIX format
<9> Database name
<10> Name of the tty device
<11> Language name
<12> Time listening thread executed
<13> Mallinfo memory free
<14> Mallinfo memory used
<15> Type of thread as a number
<16> Type of thread as a string WHERE
thread_type_string = "Normal" =1
thread_type_string = "javaOBjEX" = 2
thread_type_string = "vbOBjEX" = 3
thread_type_string = "jrfs" = 4
thread_type_string = "Compiler" = 5
thread_type_string = "jdp" = 6
thread_type_string = "Listen" = 7
thread_type_string = "Daemon"= 8
thread_type_string = "Admin"
thread_type_string = "jrla"
<17> Number of instructions executed and licenses allocated to work
around a bug in Windows. Need to build the buffer in
separate sprintf's
<18> Number of OPEN's
<19> Number of READ's
<20> Number of WRITE's
<21> Number of DELETE's
<22> Number of CLEARFILE's
<23> Number of EXECUTE's
<24> Number of INPUT's
<25> UNUSED
<26> Number of files the application thinks is open
<27> Number of files that in reality are opened by the OS
<28> Application data set by @USER.ROOT
<29> Text String to identify process
<41> Command line arguments < threadnext >
<42> Current Line Number < threadnext >
<43> Name of source
<44> Status as a text string < threadnext >
status = "Program running normally"
status = "Program is SLEEPING"
status = "Program in DEBUGGER"
status = "Program at keyboard INPUT"
status = "Program blocked on record LOCK"
status = "Program is doing EXECUTE/PERFORM"
status = "Error!! Status unknown"
<47> Status as an integer
<48> User CPU time
<49> System CPU time
<50> Child User CPU time
<51> Child System CPU time
<52> User defined thread data
SYSTEM(1028)Logged in database name
SYSTEM(1029)Shows the CALL stack history so that in error conditions the
application, such as database I/O statistics, programs
being performed and so on. Can be used with @USERDATA.
SYSTEM(1030)This new entry into the SYSTEM() function returns the current
perform level in the range 1 to 32. This is similar
to SYSTEM(16), which returns the nested execute level.
The difference is that SYSTEM(16) does not include any procs,
paragraphs or shells and returns the relative
application program level.
SYSTEM(1030) returns the relative program level including
all the proc interpreters, paragraph interpreters and
shells.
SYSTEM(1031)Number of free bytes on the current file system
SYSTEM(1032)Returns default frame size
SYSTEM(1034)Returns handle of the current thread
SYSTEM(1035)Returns the product ID of the license currently in use
by this process;
1 Enterprise
13. Server

TAFJ note 1: Non-working ones: SYSTEM(14), SYSTEM(16), SYSTEM(26), SYSTEM(101), SYSTEM(1000), SYSTEM(1001), SYSTEM(1018), SYSTEM(1026), SYSTEM(1030).

TAFJ note 2: SYSTEM(1027) shows only current process.

TAFJ R22 note: SYSTEM(1000), SYSTEM(1001), SYSTEM(1018) and SYSTEM(1026) were fixed.

TAFJ R22 note 2: SYSTEM(2) and SYSTEM(3) now return 0 (returned 120 and 50 respectively under TAFJ R19).

TAFJ R23 note: SYSTEM(1000) and SYSTEM(1001) weren't probably fixed in TAFJ R22 (unable to verify it now) - in TAFJ R23 they return a string, not a dynamic array.

EXAMPLES

       CRT SYSTEM(40)        ;* e.g. test
    * is there anything in keyboard buffer
       CRT SYSTEM(14)        ;*  0
    * Buffer is not necessarily filled manually
       DATA 'QWE'
       CRT SYSTEM(14)        ;*  4
    * Prompt...
       CRT SYSTEM(26)        ;*  ?
       PROMPT 'Your choice:'
       CRT SYSTEM(26)        ;*  Your choice:
    * Active SELECT
       IF NOT( GETENV('TAFC_HOME', V.HOME) ) THEN
          CRT 'TAFC_HOME not defined'
          STOP
       END
       CLEARDATA             ;* otherwise "QWE" will be executed
       CRT SYSTEM(11)        ;*  0
       HUSH ON
       EXECUTE 'SELECT ' : V.HOME : '/jbcmessages'
       HUSH OFF
       CRT SYSTEM(11)        ;*  490
Last update: Mon, 24 Jul 2023 12:10