petek, 15. marec 2002

Programski jeziki in programiranje


Večina programov za plačilni promet je bila napisana v asembler (assembly) programskem jeziku. Več o tem piše tukaj  in tukaj.

Groba delitev funkcij plačilnega prometa je

1.    vzdrževanje baz podatkov
2.    kontrolni program
3.    obdelava.

Prvi dve skupini sta bila napisani izključno z uporabo asembler jezika, tretja pa tudi z uporabo PL/I. Več o PL/I piše tukaj.  

Zakaj asembler?


Omejite je bila glavni spomin 96 KB ali 96.000 bajtov. Ta spomin je bil razdeljen takole:












Več o POWER piše tukaj.


Glavni program plačilnega prometa je bil kontrolni program. Izvajal se je v particiji BG z omejitvijo velikosti na 26 KB ali 26.000 bajtov. V teh 26 KB je bilo »stlačeno« vse: programska koda, delovna področja, buferji za datoteke pa še kaj.

Zapisani vrstni red particij je pomenil prioriteto izvajanja. Supervisor, kot nadzornik vseh dogajanj v računalniku je dodeljeval potrebne resurse. Particija BG je imela najnižjo prioriteto, kar pomeni, da je bilo F2 dodeljeno več procesorskih ciklov za izvajanje, F1 oziroma POWER pa je kot supervisorjev »pomočnik« dobil več ciklov kot preostale particije.

Asembler kot orodje za programiranje je imel tudi prednost v končni velikosti programa: bil je točno tako velik kot je zapisal programer. Dodatna prednost je bila tudi možnost pisanja določenih ponavljajočih se rutin ali postopkov s pomočjo MACRO ukazov in uporabo zunanjih EXTERN programov.

Primer je BIIS (BInarno ISkanje) rutina za iskanje podatkov po tabeli, ki je v spominu. Iskanje se izvede na »binarni« način ob pogoju, da so podatki razvrščeni v naraščajočem vrstnem redu. Enostavno povedano BISS primerja podatek na sredini z zahtevanim. Če je iskanec manjši od sredine, se iskanje in primerjava nadaljuje po spodnji polovici tabele. Sledi primerjava in če je iskanec manjši, se iskanje in primerja nadaljuje po spodnji polovici tabele. Obratno velja: če je iskanec večji, potem se nadaljuje po zgornji polovici tabele. Maksimalno število primerjav in razpolavljanj tabele je enaka ali manjša velikosti tabele oziroma elementov v tabeli, to je prvemu večjemu podatku 2n. Za lažje razumevanje: tabela vsebuje 200 podatkov, prva večja potenca števila 2 je 8 oziroma 256, kar pomeni, da vsak podatek v tabeli najdemo po največ 8 primerjavah.

BIIS-MACRO je v izvornem (source) programu generiral ustrezno programsko kodo (začetek tabele, dolžino podatka za iskanje, dolžino posameznega elementa v tabeli, konec tabele oziroma število elementov tabele) ter pokliče ali »zahteva izvajanje« zunanjega (EXTERN) podprograma BISSSSSS, ki dejansko izvede iskanje. BIIS-MACRO koda je lahko bila uporabljena v programu večkrat, vsaka je zasedala 20 bajtov, EXTERN BISSSSSS pa je bil le en sam in je zasedal okoli 180 bajtov.

Le za predstavo kako je delal BIIS, naj služijo spodnji podatki:




Tabela ima 19 elementov in zato je 25 ali 32 oziroma vsako vrednost najdemo v največ 5 korakih. Iščemo »AA«, polovica od tabele je 9, v našem primeru je to vrednost »KP«.



»AA« je manjše od »KP« (prva primerjava) zato iščemo po spodnji polovici. Polovica je 4, v našem primeru je vrednost »BG«.



»AA« je manjše od »BG« (druga primerjava) zato iščemo po spodnji polovici. Polovica je 2, v našem primeru je vrednost »AA«.




»AA« je enako »AA« v tabeli (tretja primerjava), zato je konec iskanja.

Podobnih MACRO ukazov je bilo v SDK izdelano veliko: SORT je sortiral tabelo, INSERT je vrinil podatek na ustrezno mesto v tabeli, CONSO je pisal sporočila operaterju na sistemski konzoli, …

Vse te rutine in makroji so bili izdelani tako, da je bila njihova uporaba možna tudi v drugih programskih jezikih.


Ni komentarjev:

Objavite komentar