TxBasic Forum

CET Basic, Theos MultiUser Basic, TxBasic and FxBasic user's forum.

You are not logged in.

#1 2018-02-13 14:40:38

jmdubois
Administrator
From: France
Registered: 2018-01-25
Posts: 57

TxBasic 1.0.48

TxBasic is upward compatible with FxBasic. It adds :

- Decimal Floating Point math library (no rounding issues) based on open source libdfp.
- 32 bits integers (@ suffix).
- ENUM type
- STRUCTURE type
- CLASS type with inheritance, properties, methods, constructor, destructor, operators overloading, private and public members, explicit access to parent class members of same name than class members.
- Optional required declarations of constants, simple variables, functions and procedures.

- Case insensitive virtual file system with libraries and disks units.
- Case sensitive access to Linux file system.

- Transaction management with commit and rollback on ISAM files and RANDOM files.
- ISAM key length up to 256 bytes.
- Support of industry DISAM file handler (license required).
- Support of C-ISAM compatible version of VBISAM.
- Multi-index ISAM files.
- Raw access to C-ISAM files for easy reading of foreign files.
- Simultaneous use of several ISAM handlers for easy ISAM files conversions.
- Direct and indexed files can be stored in SQL tables (currently MySQL/MariaDB) and accessed with usual syntax.
- MySQL/MariaDB client CALL library for fast access.
- "Unlimited" open files. 
- OPEN statement options THEOS, ISO8859, UTF8, WIN1252 allow automatic conversion of string to/from internal character set to file character set.

- Directory open (ex.: OPEN #1:"/folder/sub:s", INPUT FOLDER).
- Pipe open (ex. : OPEN #1:"ls -l", INPUT PIPE).
- Serial port I/O on COM1 to COMnn.

- Integrated printer spooler with printing queues.
- Support of any cups compatible printer, including graphics only printers.
- Direct support of PCL and ESCP/2 printers through "Raw printer" cups driver.
- Virtual PDF printer (ex.: OPEN #1:"report.g1n:pdf", OUTPUT SEQUENTIAL) to generate PDF files.
- Report long name (ex.: OPEN #1:"This is a report@report.g1n:pdf"

- User account management with privilege level, private and public files, default libraries, environment variables.
- Virtual short PID and UID on 3 digits.

- Session display allowing several programs to share the screen area with overlapping windows.

- Indexed, keyed, direct and sequential files import.
- Easy use of SYSTEM commands.
- Display and keyboard character set use Unicode.
- Default internal character set compatible with THEOS.
- Optional extended character set.
- Bidirectional file converters for Theos and UTF-8 characters sets.

New statements :

TRY
    THROW error_code
    CATCH error_code
    CATCH ALL
    END TRY

[PUBLIC|LOCAL] CLASS name
    INHERITS parent_class
    [PUBLIC|LOCAL] CONSTRUCTOR(argument_list)
        END CONSTRUCTOR
    [PUBLIC|LOCAL] DESTRUCTOR
        END DESTRUCTOR
    [PUBLIC|LOCAL] OPERATOR[$|%|@|] operator(argument)
    [PUBLIC|LOCAL] type OPERATOR operator(argument)
        END OPERATOR
    [PUBLIC|LOCAL] FUNCTION name[$|%|@|][(argument_list)]
    [PUBLIC|LOCAL] type FUNCTION name[(argument_list)]
        END FUNCTION
    [PUBLIC|LOCAL] SUB[(argument_list)]
        END SUB
    [PUBLIC|LOCAL] variable[$|%|@|][dimensions]
    [PUBLIC|LOCAL] type variable[dimensions]
    END CLASS

type = type of CLASS, ENUM or STRUCTURE entity

scope class_type variable_name [ = source_variable_name ]

CREATE "filename", INDEXED, RECLEN n, KEYLEN n
CREATE "filename", DIRECT, RECLEN n

ELSEIF condition

[PUBLIC|LOCAL] ENUM name
    label [ = value]
    ...
    END ENUM

scope enum_type variable_name [ = source_value ]

ERASE "filename"

FUNCTION name[$|%|@|](argument_list)
type FUNCTION name(argument_list)
    RETURN value
    EXIT FUNCTION
    END FUNCTION

INDEX ADD #channel : { UNIQUE } key_width
INDEX MAP #channel,index: var(column{,field{,subfield}}){[begin:end]} {, …}
INDEX USE #channel,index

[PUBLIC|LOCAL] STRUCTURE name
    scalar or array variable
    ...
    END STRUCTURE

scope structure_type variable_name

RAW READ #channel,key$:record$
RAW READNEXT #channel,key$:record$
RAW READPREV #channel,key$:record$

TRANSACTION BEGIN
TRANSACTION COMMIT
TRANSACTION ROLLBACK

MAT array$ = PARSE(string$,separators$) Parse a string into an array of tokens and separators
MAT array$ = SPLIT(string$,separators$) Parse a string into an array of tokens
MAT array$ = PATH(filepath$) Control and parse a file name into an array of elements
MAT array$ = SRCPATH(filepath$) Control and parse a file name with source wild cards into an array of elements
MAT array$ = DSTPATH(filepath$) Control and parse a file name with destination wild cards into an array of elements

ON ERROR CALL procedure
ON value CALL procedure[,procedure[,...]]

New functions :

CMDARGS : number of arguments from command line
CURRENT.LINE.POSITION : line position in source file
INDEXKEY$(channel) : primary index key of a record

LINUXFILE$(virtual_file$) : Linux file name of a virtual file
VIRTUALFILE$(linux_file$) : Virtual file name of a Linux file

TOCP437$(string$) : convert from internal character set to code page 437 (DOS)
TOISO8859$(string$) : convert from internal character set to ISO8859-15
TOWIN1252$(string$) : convert from internal character set to Windows-1252
TOUNICODE$(string$) : convert from internal character set to Unicode (wide char)
TOUTF8$(string$) : convert from internal character set to UTF-8

FROMCP437$(string$)
FROMISO8859$(string$)
FROMWIN1252$(string$)
FROMUNICODE$(string$)
FROMUTF8$(string$)

Offline

#2 2018-06-16 12:24:04

jmdubois
Administrator
From: France
Registered: 2018-01-25
Posts: 57

Re: TxBasic 1.0.48

User manuals are available in French. I start to work on English translation.

Offline

#3 2018-06-26 12:39:08

jmdubois
Administrator
From: France
Registered: 2018-01-25
Posts: 57

Re: TxBasic 1.0.48

List of features updated.

Offline

#4 2018-07-03 13:54:29

jmdubois
Administrator
From: France
Registered: 2018-01-25
Posts: 57

Re: TxBasic 1.0.48

Class now supports STATIC variable members. A static variable is shared by all instances of the class.

Offline

#5 2020-05-08 14:34:05

jmdubois
Administrator
From: France
Registered: 2018-01-25
Posts: 57

Re: TxBasic 1.0.48

Release 1.0.47 :

- New RANDOM file type is a direct access file covered by transaction management
- Available for Linux and Windows 64 bits

Offline

#6 2020-06-08 12:38:52

jmdubois
Administrator
From: France
Registered: 2018-01-25
Posts: 57

Re: TxBasic 1.0.48

Release 1.0.48 :

- Integrated interactive debugger at TxBasic language level with breakpoints, stepping and variables display :


break                         (b) set a breakpoint at current line position
break [module:]line     (b) set a breakpoint at line position
break [module:]name  (b) set a breakpoint at the beginning of function or procedure
breakn [module:]line   (bn) set a breakpoint at line number or label
clear                           (cl) remove the breakpoint at current line position
clear [module:]line      (cl) remove the breakpoint at line position
clear [module:]name   (cl) remove the breakpoint at the beginning of function or procedure
clearn [module:]line    (cn) remove the breakpoint at line number or label
continue                     (c) run up to the next breakpoint or end of program
finish                          (f) run up to the end of the current function or procedure
help                           (h) display online help
list [start [count]]       (l) list program
next                          (n) execute next line
print [var]                  (p) print a variable value or last printed variable
quit                           (q) abort program

Offline

#7 2021-02-02 18:02:57

jmdubois
Administrator
From: France
Registered: 2018-01-25
Posts: 57

Re: TxBasic 1.0.48

BTW, the user manuals are available in English since last August.

Offline

#8 2022-03-15 18:06:02

jmdubois
Administrator
From: France
Registered: 2018-01-25
Posts: 57

Re: TxBasic 1.0.48

TxBasic is now available for RHEL 8, CentOS  8, AlmaLinux 8, RockyLinux 8, OracleLinux 8 and Debian 11. It no longer needs a custom C++ compiler. Also, it supports the Intel's Classic C++ Compiler, faster with a lighter memory footprint than GCC.

Support of vbisam is deprecated because of the lack of technical support.

BTW, it is available wordwide in compliance with the ruling of the Supreme Court.

Offline

Board footer

Powered by FluxBB