Laufzeit-Eingabe und Zonenzustand korrigieren und Change archivieren
This commit is contained in:
@@ -58,6 +58,7 @@ Bildschirm zurück.
|
||||
| `TIMER` | Funktion |
|
||||
| `TIMESERIAL` | Funktion |
|
||||
| `TIMEVALUE` | Funktion |
|
||||
| `TIMEZONEKNOWN` | Funktion |
|
||||
| `WEEKDAY` | Funktion |
|
||||
| `YEAR` | Funktion |
|
||||
|
||||
@@ -72,6 +73,13 @@ Zeitpunkt bestimmt, nicht einmal beim Programmstart — ein Programm, das
|
||||
|
||||
Lässt sich die Zone nicht ermitteln, gilt UTC; das Programm läuft weiter
|
||||
und der Runner meldet es einmal beim Start auf der Fehlerausgabe.
|
||||
`TIMEZONEKNOWN` ist eine parameterlose TerminalBasic-Erweiterung mit
|
||||
Ergebnistyp `INTEGER`: `-1` bei ermittelter Zone (auch UTC), `0` bei
|
||||
UTC-Rückfall. Jede Abfrage ermittelt den aktuellen Zustand, einschließlich
|
||||
späterer Ausfälle und Wiederherstellung. Sie ändert weder die Systemuhr
|
||||
noch den programmeigenen Versatz. Rust-Einbetter erhalten Zeitwert und
|
||||
Status gemeinsam über `RtState::zeitpunkt()`; `Zeitzone::Unbekannt` kann
|
||||
weiterhin einen festen UTC-Rückfall vorgeben.
|
||||
|
||||
`DATE$ = …` und `TIME$ = …` stellen nicht die Systemuhr, sondern einen
|
||||
programmeigenen Versatz auf die Ortszeit, den alle Zeitfunktionen
|
||||
@@ -384,9 +392,39 @@ einen dokumentierten Ersatzwert statt still zu variieren.
|
||||
|
||||
`INKEY$` blockiert nicht: leerer String bei leerem Puffer, ein Zeichen
|
||||
bei einer Zeichentaste, zwei Zeichen mit führendem Nullzeichen bei
|
||||
einer Sondertaste. `INPUT$(n)` liest genau `n` Zeichen und blockiert
|
||||
einer Sondertaste. `INPUT$(n)` liest genau `n` Unicode-Codepoints und blockiert
|
||||
dabei, ohne sie am Bildschirm zu wiederholen.
|
||||
|
||||
`KEY n, text$` belegt ein Funktionstasten-Makro (n = 1–10 sowie 30/31,
|
||||
höchstens 15 Zeichen), `KEY LIST` gibt alle zwölf untereinander aus,
|
||||
`KEY ON`/`KEY OFF` blendet die Softkey-Zeile ein und aus.
|
||||
|
||||
## Fortlaufende Datei-Eingabe und Record-Konvertierung
|
||||
|
||||
`INPUT #` liest Felder fortlaufend, auch über Zeilengrenzen hinweg. Nicht
|
||||
benötigte Felder bleiben für spätere Aufrufe erhalten. `WRITE #` setzt
|
||||
Strings in Anführungszeichen und verdoppelt enthaltene Anführungszeichen;
|
||||
`INPUT #` erhält deren Inhalt einschließlich Kommas und Leerraum.
|
||||
Fehlende geforderte Felder lösen Fehler 62 aus; ein ausdrücklich leeres
|
||||
Feld bleibt zulässig.
|
||||
|
||||
`INPUT$(n, #f)` decodiert genau `n` UTF-8-Codepoints aus einer INPUT- oder
|
||||
BINARY-Datei. `INPUT #`, `LINE INPUT #` und `INPUT$` verwenden dieselbe
|
||||
Leseposition; `LINE INPUT #` entfernt ein LF-, CR- oder CRLF-Zeilenende.
|
||||
`SEEK` und `LOC` beziehen sich dabei weiterhin auf Bytes. `INPUT$(0)`
|
||||
verbraucht nichts; negative Längen lösen Fehler 5 aus. EOF vor dem
|
||||
geforderten Zeichen führt zu Fehler 62; ungültige oder abgeschnittene
|
||||
UTF-8-Sequenzen führen zu Fehler 57 statt zu Ersatzzeichen.
|
||||
Bei Tastatureingabe bleibt der unbenutzte Rest einer erweiterten Taste
|
||||
für `INPUT$` bzw. `INKEY$` erhalten: zweimal `INPUT$(1)` liest aus F1
|
||||
zuerst `CHR$(0)`, dann `CHR$(59)`.
|
||||
|
||||
`CVI`, `CVL`, `CVS`, `CVD`, `CVC` verlangen exakt 2, 4, 4, 8 bzw. 8
|
||||
Bytezeichen (Codepoints 0–255), entsprechend `MKI$`, `MKL$`, `MKS$`,
|
||||
`MKD$`, `MKC$`. Kürzere, längere oder nicht als Byte darstellbare
|
||||
Argumente lösen Fehler 5 aus. GET/PUT und UTF-32-Recordfelder bleiben
|
||||
unverändert; die MK/CV-Bytezeichen sind keine UTF-8-Dateidecodierung.
|
||||
|
||||
Fehlt bei `OPEN FOR INPUT`, `KILL` oder der Quelle von `NAME` nur die
|
||||
Datei, gilt Fehler 53. Ein fehlender Elternpfad führt zu Fehler 76,
|
||||
auch beim Erzeugen, Umbenennen oder Anlegen von Verzeichnissen.
|
||||
|
||||
Reference in New Issue
Block a user