TCB( ) |
Return Task Information |
1. |
TCB (tcb_code [,ERR=stmtref]) | |
2. |
TCB (pkg_index, info_reqd [,ERR=stmtref]) | |
3. |
TCB (keyword [,ERR=stmtref ]) | |
4. |
TCB (keyword, userid [,ERR=stmtref ]) |
info_reqd |
Can be one of the following values:
| ||||||
pkg_index |
A number from 0 to the number of packages installed. | ||||||
keyword |
Keyword associated with specific platform information. | ||||||
userid |
User ID whose information is to be returned. | ||||||
stmtref |
Program line number or statement label to which to transfer control. | ||||||
tcb_code |
Value indicating what type of information is to be returned. Numeric expression. |
The TCB( ) function returns information for several different purposes:
• A single tcb_code specified in the TCB( ) function returns a corresponding system control value. See Format 1: Return Task Information.
• Two numeric codes (pkg_index, info_reqd) are required for activation/licensing information. See Format 2: Return Activation Information.
• Specific keywords are used to return information about the platform that PxPlus is compiled for or on. See Format 3: Return Platform Information.
• Specific keywords are used to return user registration information on UNIX/Linux. See Format 4: Return User Information.
TCB (tcb_code[,ERR=stmtref])
When TCB( ) is used with a single code (tcb_code), it returns task information in the form of a numeric system control value. The codes and their values are:
TCB( ) |
Return Values |
0 |
(Reserved) 0 (zero). |
1 |
(Reserved) 0 (zero). |
2 |
Error branch taken indicator. Will be set to non-zero whenever an error branch (ERR=, DOM=, NUL=, BSY= or END=) branch is taken. Reset to 0 (zero) whenever the system detects the presence of an error branch option. Example: read (1,key=K$,err=*NEXT) ... |
3 |
Internal system error code. |
4 |
Current statement number (only reported when running a program, not in Command mode). |
5 |
Line number of the last error. |
6 |
SETESC statement number. |
7 |
SETERR statement number. |
8 |
Top statement number in GOSUB stack. |
Returns the operating system error code. | |
10 |
Internal system error code. |
11 |
Retry statement number. |
12 |
Current level number. |
13 |
Current level number. PxPlus includes current level in both TCB(12) and TCB(13) for compatibility with other Business Basics. |
14 |
Current precision (-1=FLOATINGPOINT). |
15 |
Current maximum memory size in bytes. |
16 |
Length of string found in last MSK( ) function. |
17 |
Current level of user functions. |
18 |
Current iteration of range assignment. |
19 |
Current iteration for enhanced FOR..NEXT loop. |
20 |
Number of arguments in 'CALL'. |
21 |
Current activation flags. |
22 |
Number of days left for current activation. |
23 |
Maximum user count. |
24 |
Number of users available. |
25 |
Operating system version number. |
27 |
Reports current session's user slot number and type of slot: >0 - Dedicated non-shared user slot number being used See '1U' system parameter. |
29 |
Reports the current build level of PxPlus. |
30 |
Statement number of last error in called program. |
31 |
Last object to lose focus. |
32 |
Version level of activation. |
33 |
System serial number. |
34 |
System machine class. |
35 |
System identification number. |
36 |
PxPlus Library version code. |
37 |
EFF support: 0 - EFF not supported |
39 |
Highest used object identifier. (0 = no objects in system) |
40 |
SETTRACE file number (if active). |
41 |
Number of duplicate labels on last save. |
42 |
Number of unknown state labels on last save. |
43 |
Offset to the last detected error in the last statement compiled. Reports the number of characters before the error occurred. |
44 |
Number of seconds of offset to GMT (Greenwich Mean Time). |
45 |
Daylight Savings indicator: 1 if Daylight Savings active, 0 if not. |
46 |
(Reserved for System Use) (TCB(46) was added in PxPlus 2021.) |
47 |
Returns the maximum number of lines/columns that the system can support (254 or 620, depending on the release you are using and activation levels). (TCB(47) was added in PxPlus 2021.) |
50 |
Number of file reads. |
51 |
Number of file writes. |
52 |
Number of Keyed I/O forced buffer flushes. |
53 |
Number of programs loaded from disk. |
54 |
Number of programs loaded from program cache. |
55 |
Program swap-outs. |
56 |
Program swap-ins. |
57 |
Program reloads from disk. |
60 |
(PVX Windows) Keyed file header busy retries. |
61 |
Busy record count. |
62 |
Number of unsuccessful file opens. |
For TCB(63) to TCB(66) below, the values in the system parameters 'VR' and 'VW' define the number of read/write retries before a data read/write error will be generated: | |
63 |
Number of READs verified. |
64 |
Number of WRITEs verified. |
65 |
Number of READ mis-compares. |
66 |
Number of WRITE mis-compares. |
67 |
On completion of KEYED LOAD command: > 0 - The number of keys reloaded |
68 |
Password retry count. |
70 |
Number of logical OPEN directives executed. |
71 |
Number of logical READ / EXTRACT / FIND directives executed. |
72 |
|
73 |
Number of dynamically added EFF file buffers. |
74 |
Number of dynamically added VLR file buffers. |
75 |
Number of WindX packets forced to send response due to 'TA'= system parameter. |
Returns the number of active WindX Plug-ins connected to the server. It can be compared against the number of licensed WindX Plug-in users, which can be obtained from MOD (TCB (20013, 2), 2048), to see if more users can connect. Note:
| |
80 |
Last VBX status or error code. |
81 |
Last Window LPARAM= value. |
Windows operating system version: 0 - If running under Windows 3.1 | |
Status of the debug window: | |
84 |
Last OS exit status from a process launched by an INVOKE or a SYS( ) function. Only valid if system waits for task completion. |
85 |
Last spawned task/process identifier (PID). |
86 |
WindX serial number (or zero if not using WindX). (added in PxPlus v8.11) |
87 |
(UNIX/Linux Only) Returns PID of lock conflict. When a file I/O attempt is made and fails due to a lock, TCB(87) returns the PID of the process owning the lock. Use this process ID along with the output of a 'ps' command to identify who has a record locked. |
88 |
WindX version number or 0 (zero) if not running under a WindX session. |
Numeric value of current PID. This allows for PID values that are larger than the 16-bit values returned by GID and will remain constant for 32-bit, upcoming 64-bit (and beyond) operating systems. Replaces the use of DEC($00$+GID) to retrieve the current PID value. | |
91 |
Current Task/Thread Priority level. Three system parameters control the priority of a task, primarily to balance the load in a Client/Server environment. See 'Q_', 'Q^' and 'QF' task priorities. |
92 |
Yields the TIM= value * 100 (100ths of a second) when doing embedded I/O, or -1 if no TIM=. |
93 |
Current object ID used in the WITH directive. |
94 |
(UNIX/Linux Only) Current logical effective UserID. |
95 |
(UNIX/Linux Only) Current logical effective GroupID. |
96 |
(UNIX/Linux Only) Current True OS effective UserID. |
97 |
(UNIX/Linux Only) Current True OS effective GroupID. |
99 |
Program security flags. |
101 |
Number of times variables were referenced. |
102 |
Number of variables not found in the variable table. |
103 |
Number of memory compares performed to locate variables. |
104 |
Number of times the variable table was re-balanced. |
110 |
Number of memory allocations made by PxPlus. |
Number of entries currently in the Error History table. (added in PxPlus v11) | |
170 |
Windows Service handle. 0 if not running as a service. |
190 |
ADO Support: 1 if available, 0 if not. |
191 |
LibHaru (Enhanced PDF) support: 1 if available, 0 if not. |
192 |
(Obsolete) Running UltraFX: 1 if enabled, 0 if not. |
193 |
XML support: 1 if available, 0 if not. |
195 |
ZLIB support: 1 if available, 0 if not. |
196 |
DLL( ) UNIX/Linux support: 1 if enabled, 0 if not. |
197 |
ODBC: 1 if enabled, 0 if not. |
198 |
DB2 support: 1 if enabled, 0 if not. |
199 |
Built-in SSL: 1 if SSL supported, 0 if not. |
TCB values in the 200 range are designated for use with ORACLE: | |
200 |
OCI available: 1 if OCI is enabled, 0 if not. |
201 |
OCI Connects. |
202 |
OCI Opens. |
203 |
OCI Shares. |
204 |
OCI Selects. |
205 |
OCI Inserts. |
206 |
OCI Updates. |
207 |
OCI Deletes. |
208 |
OCI Prepare Selects. |
209 |
OCI Prepared Select Used. |
210 |
OCI Prepare Insert. |
211 |
OCI Prepared Insert Used. |
212 |
OCI Prepare Failures. |
213 |
OCI Dictionary Reads. |
214 |
OCI User Commands. |
The following TCB values return information used for sizing variables when building a C structure, either a numeric size (in bytes not bits) or 0 if there is no such data type: | |
301 |
Size of a pointer (any kind of memory pointer). |
302 |
Size of a Boolean. |
303 |
Size of a char or byte. |
304 |
Size of a short or short int. |
305 |
Size of an int. |
306 |
Size of a long or long int. |
307 |
Size of a long double. |
308 |
Size of a long long. |
309 |
Size of a double. |
310 |
Size of a float. |
311 |
(Windows Only) Size of a WORD. |
312 |
(Windows Only) Size of a DWORD. |
313 |
(Windows Only) Size of a HANDLE. |
314 |
(Windows Only) Size of a WCHAR. |
315 |
(Windows Only) Size of a LPARAM. |
316 |
(Windows Only) Size of a WPARAM. |
500 |
Number of characters into the compression routine for WindX. |
501 |
Number of characters out of the compression routine for WindX. |
502 |
Number of times Windows version of the system was Idle and went through the Message Queue. |
503 |
Number of extra characters (or missing characters if negative) in data detected on last read against an IOList. |
504 |
Windows character set. |
505 |
Windows Code page for character presentation. |
506 |
Process ID. If running under client server, this will be the process ID on the server. |
507 |
External debugger status: 0 - No debug active |
510 |
Object number for the currently defined Object Defined Controls server. |
511 |
Current number of cached object classes. (added in PxPlus v8.01, build 9181) |
512 |
Number of object class definitions that have been processed by the system. (added in PxPlus v8.01, build 9181) |
513 |
Number of times an object class definition was loaded from object cache. (added in PxPlus v8.01, build 9181) |
TCB(pkg_index, info_reqd[,ERR=stmtref])
When TCB( ) is used with two codes (pkg_index, info_reqd), it reports PxPlus licensing information in numeric form (owner code, package ID, and date):
pkg_index |
Can be any number from 0 to the number of packages installed. Maximum is 20. | ||||||
info_reqd |
Can be one of the following values:
|
To simplify locating a package's information, you can specify the actual package ID instead of the index.
Example:
To get the expiry date for package 7587, you could issue: TCB(7587, 1).
To validate if an activation is present, you can issue TCB(packageid, 0), which will return the index for the package if it is present in the system or -1 if not.
This option is available for any package whose package number is >20.
(The ability to pass package numbers to the TCB function was added in PxPlus v6.30.)
for ID=0 to 100
PACKAGE=tcb(ID,0,err=*break)
EXPIRY=tcb(ID,1)
FLAGS=tcb(ID,2)
print "PACKAGE#: ",tbl(PACKAGE=0,str(PACKAGE),"PXPLUS"),
print @(20),"EXPIRES: ",tbl(EXPIRY=0,str(EXPIRY),"<NEVER>"),
print @(40),"ACT FLAGS: ","$"+hta(bin(FLAGS,4))+"$"
next ID
Return Platform Information
TCB(keyword [,ERR=stmtref ] )
The following keywords (case insensitive) return information about the platform that PxPlus is compiled for or on, along with activation information:
Keyword |
Return Values |
"compiled_bits" |
Either 32 or 64. |
"compiled_cpu" |
Type of processor (x86/PowerPC, etc.). |
"compiled_architecture" |
CISC/RISC/EPIC (nature of the CPU). |
"compiled_os" |
Operating system name. |
"compiled_osver" |
Operating system version. |
"registered_name" |
Name of the user given when the software was registered/activated. (added in PxPlus v8.01, build 9181) |
"OpenSSL_Version" |
OpenSSL version being used by PxPlus. See SSL/TLS Security Certificates. (added in PxPlus 2020) |
Return User Information (UNIX/Linux Only)
TCB(keyword, user [,ERR=stmtref ] )
The following keywords (case insensitive) return information about the specific User ID based on the OS registration tables (UNIX/Linux Option Only):
Keyword |
Return Values |
"OS_getusergid" |
Returns the UNIX GID for the specified user. Example: tcb("OS_getusergid", "fred") |
"OS_getuseruid" |
Returns the UNIX UID number for the specified user. Example: tcb("OS_getuseruid", "fred") |
"OS_getusername" |
Returns the UNIX user name for the specified user. |
"OS_getuserhome" |
Returns the UNIX home directory for the specified user. |
"OS_getusershell" |
Returns the UNIX shell program for the specified user. |