SDS BASIC - SDS BASIC
Paradigma | rozkazovací způsob |
---|---|
Poprvé se objevil | 1967 |
OS | několik |
Ovlivněno | |
Dartmouth BASIC | |
Ovlivněno | |
HP Time-Sharing BASIC, SCELBAL mnoho dalších |
SDS BASIC, také známý jako CP-V BASIC, Dávka BASIC nebo Sigma BASIC v závislosti na verzi je a ZÁKLADNÍ programovací jazyk překladač pro Vědecké datové systémy (SDS) Řada Sigma mainframe počítače, původně vydána v roce 1967. xerox koupil SDS v roce 1969 a začal jej rebrandovat na Xerox Data Systems a nakonec jen na Xerox, kdy se tento jazyk stal známým jako Xerox BASIC.
Původní verze neobsahovaly podporu pro řetězcové proměnné, ačkoli toto bylo přidáno pro verzi běžící pod Operační systém CP-V když vyšlo v roce 1971. Knihovna řetězců umožňovala manipulaci s řetězci pomocí krájení pole syntaxe, podobná systému v HP Time-Shared BASIC a řada mikropočítač ZÁKLADY jako Celé číslo ZÁKLADNÍ a Atari BASIC.
Tento styl manipulace s řetězci se liší od modelu zavedeného v DEC BASIC-PLUS, který používal řetězcové funkce. Altair BASIC byl vzorován na BASIC-PLUS a tento styl se stal de facto standard po multiplatformní verzi, Microsoft BASIC, se během roku stal téměř univerzálním domácí počítač éra. Díky tomu je přechod z SDS na moderní dialekty poněkud obtížný.
SDS BASIC je historicky pozoruhodný jako platforma, na které je originál Star Trek počítačová hra byl napsán v létě 1971.[1]
Syntax
V souladu s originálem Dartmouth BASIC modelu a stejně jako většina ostatních mainframe SDS BASIC, založený na BASICu, byl překladač, nikoli tlumočník, a používal samostatné, ale úzce integrované nástroje pro úpravy a běh. Editor byl věnován BASIC; při zadávání řádků jsou analyzovány na správnou syntaxi a poté uloženy v tokenizované podobě. Pokud je řádek zadán s číslem na začátku, je umístěn na příslušné místo v programu na základě čísla, řádky bez čísel byly okamžitě zpracovány a poté zapomenuty. SDS povolil čísla řádků v rozsahu 1 až 99999.[2] Jednoduchý příklad je:
10TISK"AHOJ SVĚTE"
Stejně jako mnoho verzí jazyka BASIC umožňovalo SDS, aby jeden řádek kódu obsahoval více příkazů. Ve většině dialektů je to indikováno pomocí dvojtečky:
10TISK"AHOJ":TISK"SVĚT"
V SDS bylo místo toho použito zpětné lomítko, , nebo ampersand, &.[3] Ekvivalentní řádek v BL by byl:
10TISK"AHOJ"\TISK"SVĚT"
Protože SDS byl kompilátor a uživatel zdrojový kód byl uložen samostatně, umožnil přední mezery v kódu a uchoval je. Navrhli použít toto pro jasnější označení struktury smyček:[4]
10NECHATJ=0,K.=120PROJá=K.NA830TISKJ40M=J,J=K.,K.=K.+150DALŠÍJá
Tento příklad také zahrnuje schopnost nastavit více hodnot v jednom příkazu LET, jak je vidět na řádcích 10 a 40. Tato funkce byla také nalezena v HP BASIC. Stejně jako ve většině verzí jazyka BASIC je klíčové slovo „LET“ volitelné a je vynecháno z řádku 40.[5]
Běžné matematické operace zahrnovaly +, -, * a /, s použitím ^ nebo ** pro exponenty.[2] Logická srovnání, jako HP, lze psát v libovolném pořadí, takže <= bylo ekvivalentní = = a>
SDS podporováno vypočítané GOTO pomocí ON, ale také povolil alternativní syntaxi s ON na konci řádku namísto přední:
JÍT DO140,160,180NAY
Alternativní formou REM byla přední hvězda, *,[6] v podobném smyslu jako krátká forma nalezená v BASIC odvozených z MS, jednoduchá citace, “.[7]
Manipulace s řetězci
Rané verze SDS BASIC, někdy známé jako Batch BASIC nebo BTM BASIC, nepodporovaly řetězcové proměnné. Řetězcové hodnoty však mohly být přiřazeny číselným proměnným, které mohly uložit šest znaků jako své EBCDIC číselné hodnoty.[8] Pozdější CP-V BASIC přidal skutečné řetězcové proměnné obsahující až 132 znaků, které by mohly být označeny koncovým znakem dolaru, $ nebo neobvykle jsou přední $ - A $ a $ A ekvivalentní. V manuálu je uvedeno, že druhý formát byl přidán kvůli kompatibilitě s A00 BASIC.[9][A]
CP-V interně používal rozložení řetězce pevné délky skládající se z pole bajtů, které nebylo možné změnit za běhu. To bylo podobné jako u ostatních BASICů, které používaly řeznou notaci, jako HP a Atari. Kontrastuje se stylem DEC / Microsoft, kde byly řetězce dynamicky přidělovány na a halda. Na rozdíl od ostatních dialektů BASIC s pevnou délkou nemusejí být řetězcové proměnné před použitím DIMmed, místo toho všechny řetězce standardně nastaveny na maximální délku 72 znaků. Jednalo se o globální nastavení, které bylo možné změnit, aby bylo možné lépe spravovat paměť nastavením na menší hodnotu, nebo povolit delší řetězce až do maxima 132 znaků. Toho bylo dosaženo pomocí SET $ = 132. Matoucí je, že SET byl také použit pro zcela nesouvisející úkol umožňující použití proměnných v příkazech DIM.[10]
Protože řetězce v CP-V se veřejně neprezentovaly jako pole znaků, syntaxe krájení nebyla založena na syntaxi pole. To znamenalo, že CP-V také umožňoval konstrukci polí řetězců, něco dialektů jako HP a Atari chybělo, protože pro krájení používali maticovou notaci. Dalo by se tedy vytvořit matici řetězců pomocí DIM:[9]
10ZTLUMITA $(5,10)
by definovalo matici obsahující celkem 50 řetězců o 72 znacích. Protože systém podporoval pole, byla syntaxe krájení o něco složitější než systém nalezený v jiných verzích. Mezi příklady patří:[9]
A $(1)
vybere první řetězec v poli řetězců, zatímco:
A $(1,5)
vybere řetězec z umístění 1,5 v 2D poli (matici). Krájení bylo zpracováno přidáním dvojtečky do paren:[9]
A $(:4)
vrátil vše od 4. znaku dne:
A $(:4,5)
vybere pět znaků začínajících 4. znakem, zatímco:
A $(1,5:4,5)
vybere pět znaků počínaje 4. znakem řetězce na místech 1,5 v 2D poli.[9]
Řetězcové konstanty lze oddělit jednoduchými nebo dvojitými uvozovkami, což usnadňuje uzavření uvozovek do řádků. Platné příklady zahrnují:[11]
TISK„TO JE STRUČNÝ LITERÁL“TISK„TOTO JE DALŠÍ JEDEN“TISK„A TOTO JE„ TŘETÍ ““TISK„A„ ČTVRTÝ “
CP-V také obsahuje příkaz CHANGE od Dartmouth BASIC, který převádí řetězec na řadu EBCDIC číselné hodnoty a umístí je do číselného pole:[12]
10ZTLUMITB(6)20ZMĚNA"A B C D E F"NAB
B bude nyní obsahovat řadu čísel odpovídajících hodnotám EBCDIC pro každý znak.[12]
Vstup výstup
SDS zahrnoval robustní systém pro vstup / výstup založený na číslech „streamu“, které bylo možné specifikovat v příkazech PRINT a INPUT. Data lze například načíst ze souboru pomocí:
10OTEVŘENO'FILE1' TO: 1, INPUT20VSTUP:1,A
První lež otevře soubor na disku s názvem „FILE1“, přiřadí jej proudu 1 a naznačuje, že bude použit pro vstup. Druhý řádek čte další data z proudu 1, v tomto případě první hodnoty, a přiřazuje výsledná data k proměnné A. Systém také zahrnoval jedinečný „klíčový“ systém, který umožňoval číslování dat a následný náhodný přístup. Toho bylo dosaženo přidáním čísla klíče za středníkem:
VSTUP:1;9999,A
se pokusí přečíst záznam 9999. Platné klíče byly v rozsahu 0,001 až 9999 999, a pokud nebyly v souborech přiřazeny žádné klíče, bylo řádkům přiřazeno číslo 1 000, 2 000 atd. Klíč s nejvyšší hodnotou v souboru mohl číst pomocí:[13]
KLÍČ(1)
kde 1 je číslo streamu.[13] Nestrukturovaná binární data lze číst a zapisovat bajty v čase pomocí GET a PUT.[14]
MAT příkazy
Novější verze Dartmouth BASIC obsahovaly sadu ROHOŽ
příkazy, které umožňovaly operace na celých polích (matice ) jediným příkazem. Ty byly k dispozici také v SDS BASIC. Ve své nejjednodušší podobě ROHOŽ
se používá jako alternativní forma NECHAT
, použití výrazu na všechny prvky v poli. Například:
100ZTLUMITA(20),B(20)...200ROHOŽA=A+B
Přidá hodnotu každé hodnoty v B ke každému záznamu v A stejným způsobem jako:
100ZTLUMITA(20),B(20)...200PROJá=1NA20210A(Já)=A(Já)+B(Já)220DALŠÍJá
Kromě zkrácení a zřetelnosti kódu mají tyto příkazy také tu výhodu, že jsou vysoce optimalizované a snadno překonávají použití FOR / NEXT.[15] Další funkce a příkazy se mění TISK
a VSTUP
, invertovat pole a vytvářet matice identity a podobně v jediném příkazu. {[16]
Poznámky
- ^ A00 se jeví jako jiný název pro Batch BASIC, kde vedoucí $ bylo makro pro převod hodnot na EBCDIC.
Reference
Citace
- ^ Markowitz, Maury; Mayfield, Mike (2000). "Star Trek". Hry slávy. Archivováno od původního dne 06.11.2018. Citováno 2018-11-27.
- ^ A b Xerox 1974, str. 2.
- ^ A b Xerox 1974, str. 19.
- ^ Xerox 1974, str. 3.
- ^ Xerox 1974, str. 9.
- ^ Xerox 1974, str. 17.
- ^ "REM prohlášení (Visual Basic)". Microsoft. 20. července 2015.
- ^ Xerox 1974, str. 23.
- ^ A b C d E Xerox 1974, str. 21.
- ^ Xerox 1974, str. 40.
- ^ Xerox 1974, str. 8.
- ^ A b Xerox 1974, str. 25.
- ^ A b Xerox 1974, str. 26.
- ^ Xerox 1974, str. 29.
- ^ Ref 1976, str. 11-50.
- ^ Xerox 1974, str. 34.
Bibliografie
- Xerox BASIC: Referenční příručka pro jazyk a provoz (PDF). Xerox. Srpna 1974.