System Functions
The following system functions are supported by TAFC:
Function | Description |
---|---|
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