PBXB64 unterstützt ein Rich-Type-System, das vier Domänen umfasst. Dieser Abschnitt dokumentiert jeden vom Compiler akzeptierten Typ, sein Speicherlayout, seinen Wertebereich, Suffixzeichen und die darauf verfügbaren Laufzeitoperationen.
PBXB64 unterstützt ein Rich-Type-System, das vier Domänen umfasst. Dieser Abschnitt dokumentiert jeden vom Compiler akzeptierten Typ, sein Speicherlayout, seinen Wertebereich, Suffixzeichen und die darauf verfügbaren Laufzeitoperationen.
| Domäne | Unterabschnitt | Was es abdeckt |
|---|---|---|
| Grundlegende numerische und Zeichenfolgentypen | BASIC-Datentypen | Die PowerBASIC-kompatiblen Skalare: BYTE, WORD,
DWORD, INTEGER, LONG, QUAD,
SINGLE, DOUBLE, EXTENDED,
CURRENCY, CURRENCYX, STRING,
BSTRING, WSTRING, VARIANT,
GUID, Zeigertypen. |
| Breite Ganzzahltypen | Breite Ganzzahltypen | 128/256/512-Bit-Ganzzahlen mit fester Breite (INT128/UINT128
durch INT512/UINT512) mit nativem Inline-x64
Arithmetik. |
| Unbegrenzte / wissenschaftliche Typen | UNL – Unbegrenzte Ganzzahl, UNF-Familie, DEZIMAL128 | Typen mit willkürlicher Genauigkeit und exakter Dezimalzahl: UNL
(unbegrenzte ganze Zahl), die UNF Familie (wissenschaftlicher Fixpunkt),
und IEEE 754 DECIMAL128. |
| H-Lib-Containertypen | Native H-Lib-Container | Die 23 nativen Containerfamilien (LNARR, LNHSH,
LNTRE, ...) als PB-Level-Typen mit method-dispatch verfügbar gemacht
Syntax. Containervariablen werden automatisch initialisiert und automatisch finalisiert. |
Jeder PBXB64-Typ fällt in eine dieser Kategorien:
BYTE (8), WORD (16),
DWORD (32), INTEGER (16, PB-kompatibler Alias von
LONG in PBXB64), LONG (32), QUAD (64),
Wo angegeben, signiert und nicht signiert.SINGLE (32-Bit IEEE 754),
DOUBLE (64-Bit IEEE 754), EXTENDED (80-Bit x87).CURRENCY (64-Bit / 10^4),
CURRENCYX (128-Bit / 10^4, PBXB64-Erweiterung).INT128/UINT128,
INT256/UINT256, INT512/UINT512.UNL (willkürliche Präzision),
UNF Familie, DECIMAL128 (IEEE 754-2008).STRING (dynamisch, ANSI),
BSTRING (dynamischer BASIC-String-Kompatibilitaetstyp),
STRINGZ (NUL-terminiert), WSTRING (dynamisch, UTF-16),
WSTRINGZ (breiter NUL-terminiert), ASCIIZ.TYPE/UNION,
feste und dynamische Arrays, VARIANT, OBJECT,
GUID.@), ANY
(untypisiert), CODEPTR Funktionszeiger.LOCAL i AS LONG LOCAL d AS DOUBLE LOCAL big AS INT128 LOCAL huge AS UNL LOCAL exact AS DECIMAL128 LOCAL name AS STRING LOCAL oleName AS BSTRING LOCAL pts AS LNARR OF Point ' container of UDT DIM arr(1 TO 10) AS LONG
PBXB64 berücksichtigt die traditionellen PB-Siegelsuffixe aus Gründen der Abwärtskompatibilität:
| Suffix | Typ | Beispiel |
|---|---|---|
% | GANZE ZAHL | v% = 5 |
& | LONG | v& = 100000 |
! | EINZEL | f! = 1.5 |
# | DOPPELT | d# = 3.14 |
$ | STRING | s$ = "hi" |
?? | WORD | w?? = 60000 |
??? | DWORD | dw??? = 4000000000 |
&& | QUAD | q&& = 2^40 |
??? | DWORD | (dasselbe wie oben) |
?# | WÄHRUNGX | c?# = 9.99 |
Typ- und Variablenseiten sollen Breite, Vorzeichen, Initialisierung, Gültigkeitsbereich, Suffixregeln und x64-Layout dokumentieren. Beispiele sollen gespeicherten Wert, ausgelesenen Wert und Konvertierungs- oder Überlaufverhalten belegen.
Nennen Sie, ob Deklarationen #DIM ALL, AS-Klauseln, Suffixe oder ausdrückliche Sichtbarkeit benötigen. Trennen Sie lokalen, statischen, globalen und thread-lokalen Speicher.
Prüfen Sie Pointer-, Handle- und LONG-Annahmen beim Wechsel von 32-Bit-PB-Code zu PBXB64.
Wenn eine Seite mehrere verwandte Formen gruppiert, sollte sie sagen, welche Form die Speicherbreite festlegt, welche nur die Deklarationssyntax ändert und welche nur historischen Charakter hat. Eine kleine Zuordnung von Familienbegriff zu den konkreten Typseiten macht die Seite beim Portieren deutlich nützlicher.

Hierarchie der numerischen, Zeichenketten- und zusammengesetzten Datentypen in PBXB64.