IO hibák kezelése
Az IO használat során felmerülõ hibák kezelésére kétféle
lehetõség van.
Default mód esetén például ha sikertelen egy filehoz való hozzáférés, akkor egy
hibaüzenetet kapunk és a program befejezõdik.
Az
’anything goes’ mód esetén a
felhasználó nem kap üzenetet a hibáról, és a program folytatódik.
Ilyenkor az openr()
és openw() függvények 0 értékkel térnek vissza, ha sikeres a file-hoz való hozzáférés,
egyébként pedig nem 0-val. Ha nem létezõ file-ból próbálunk olvasni, akkor a ’*e’ karaktert
kapjuk.
A hibakezelés módját az
ioerrors(n) rutinnal állíthatjuk.
Ez n =
0 estén ’default’, n = 1 esetén pedig ’anything goes’ módra állítja a hibakezelést.
Fortran és GMAP szubrutinok hívása
A B nyelvbõl kimaradt néhány, egyébként
hasznos dolog, például több dimenziós tömbök, std… amik Fortran –ban megtalálhatóak.
Viszont van egy
callf() függvény, amivel Fortran és GMAP subrutinokat hívhatunk.
Használata:
callf(name, a1, a2, …. ,a10);
A ’name’ helyére kerül a Fortran függvény vagy
rutin neve, a1 – a10 helyére pedig az argumentumok.
A paramétereket cím szerint kell
átadni. Konstansok nem szerepelhetnek az argumentumok helyén.
Példa az aktuális idõ lekérdezésére:
t = 0;
tod = callf(itimez, &t);
B programok fordítása és futtatása MH TSS rendszer alatt
B programokat a ./bj
parancs segítségével futtathatunk. Ezt a programot B. W. Kernighan és C. Johnson
implementálták,
és egy felületet biztosít a B frodító és az operációs rendszer között.
A szintaktikája a következõ képen néz ki:
./bj [(options)] [source [hstar] ] [spec] [spec] [spec] …
’options’ jrun opciók kerülnek ide
’source’ helyére a cat/file leírása kerül a B forrás file-nak
’hstar’
helyére a cat/file leírása kerul a H* output file-nak
’spec’ lehet a következõ:
’h=cat/file’
’r =cat/file’
’l=cat/file’
’s=nnn’
Utóbbival tudjuk például a stack méretét szabályozni mely alapértelmezésben 500. nnn egy
integer.
Pl: ./bj name hstar
Ez a legegyszerûbb parancs. ’name’ a B program neve,
amely fordításra kerül, hstar a H* eredmény file.
A B nyelv jövõbeni fejlesztésérõl:
Több funkció is hiányzik a nyelvbõl, melyek
hasznosak lehetnének.
Ilyen például a BCD vagy a bináris file-ok írásának és
olvasásának a lehetõsége.
A legvalószínûbb az IO könyvtár egy közel jövõbeni bõvítése.
Szinte biztos, hogy a getchar() és putchar() függvények változatlanul maradnak.
A
B nyelv viszonylag jól mûködik a H6070-es rendszeren, de byte címezõ gépek esetén, mint az
IBM 360/370 modellek
vagy a PDP-11, a B kevésbé elõnyös. A sikeres C nyelv a B nyelv
byte címezõ gépekre vonatkozó legtöbb elõnyét tartalmazza,
csakúgy, mint a strukturált
programozás lehetõségét. További fejlesztés lehet a debug-olás lehetõségének megteremtése.