Imports System.Collections.Generic
Module Module1
Sub Main()
Dim n1 As Integer
Dim n2 As Integer
n1 = 1
n2 = 1
Console.WriteLine("{0}", n1)
While n2 < 500
Console.WriteLine(n2)
n2 = n2 + n1
n1 = n2 - n1
End While
Console.ReadLine()
End Sub
End Module
Kod zawiera dość elementarną bezparametrową procedurę (makro) Visual Basica. Jedyny element, jaki „nie pasuje” do StarBasica, to obsługa obiektu Console, czyli wyposażenia makra w dostęp do odpowiednika standardowych strumieni wejścia i wyjścia.
Nie chodzi o składnię języka, tylko o obiekty należące do biblioteki.
Warto inaczej sformułować pytanie:
(1) jak w StarBasicu realizować odpowiedniki czytania i pisania z urządzeń znakowych?
(2) program nie komunikuje się z maszynerią obsługującą dokumenty. Jaki jest sens pisania tego typu skryptów koniecznie akurat w Basicu będącym częścią pakietu biurowego?
Ad (2) każdy „poważny” język skryptowy przeznaczony nie-wyłącznie do obsługi wewnętrznych mechanizmów aplikacji graficznej ma dostęp do standardowych kanałów wejścia i wyjścia tekstowego, dostarczanych przez system operacyjny. Obecnie najpopularniejszym językiem tego typu jest Python. Ale jest ich sporo.
Ad (1) wierzę, że StarBasic, czyli implementacja Basic w Open/LibreOffice także ma taką możliwość. Standardowa funkcja Print albo generuje okno typu MessageBox, albo wypisuje wartość do pliku. Potrzebny byłby obiekt podobny do konsoli (jak w VB), która prezentowałaby efekt dwustronnej komunikacji. Nie znam szczegółów realizacyjnych biblioteki Basica związanych z tym mechanizmem. A już zwłaszcza funkcjonujących w zbliżony sposób w każdym obsługiwanym systemie operacyjnym.
JJ LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)