[ohjelma] on jokin dmf tiedosto, joka on käännetty prg tiedostosta.
[tyyppi] on numero, joka kertoo kuinka dmf tiedosto tulee suorittaa.
Tyypit ovat:
0 tai ei mitään - kaikki muuttuja-arvot siirtyvät ylemmältä ohjelmatasolta alemmalle ja päinvastoin
1 - kaikki muuttuja-arvot siirtyvät ylemmältä ohjelmatasolta alemmalle ja mutta ei enää alemmalta ylemmälle tasolle
2 - muuttuja -arvot eivät sirry ylemmältä ohjelmatasolta alemmalle ja mutta siirtyvät alemmalta ylemmälle tasolle
3 - muuttuja -arvot eivät sirry ylemmältä ohjelmatasolta alemmalle tai päinvastoin
-1 - kaikki muuttuja -arvot siirtyvät ylemmältä ohjelmatasolta alemmalle ja päinvastoin, mutta vain yhden tason verran
30 - muuttuja -arvot eivät sirry ylemmältä ohjelmatasolta alemmalle tai päinvastoin. Lisäksi jos suorituksessa tulee virhe siitä ei välitetä.
Tätä käytetään monissa yhden rivin tai lyhyissä laskentakaava -ohjelmissa.
5 - lataa muistiin aliohjelma (kt. esimerkki), mikäli tämä on annettu [taso] pitäisi olla nolla
6 - vapauta muistissa olevan ohjelman data (kt. esimerkki)
7 - vapauta muistissa olevan ohjelma ja sen data (kt. esimerkki)
19 - suorita muistissa oleva ohjelma (kt. esimerkki)
[taso] on ns. sisäinen ohjelmataso (max 19), johon ohjelma dmf ohjelma ladataan (kt. esimerkki).
[taso] -parametriä käytetävät aliohjelmat ovat ikäänkuin omalla ylimmällä tasollaan eivätkä ole tietoisia muista tasoista.
Funktio palauttaa numeron, joka sisältää ohjelmapidikkeen kun [taso] on sopiva.
Datamike ohjelmamoottori sisältää kääntäjän, joka muuttaa prg -lähdekooditiedoston konekielelle dmf tiedostoksi.
Esimerkiksi jos on lähde kooditiedosto asiakas.prg siitä käännetty tiedosto on asiakas.dmf.
dorun("asiakas.dmf") -funktio sitten suorittaa ko. ohjelman. Käytöstä tarkemmin esimerkeissä.
Jos on esimerkiksi kaksi prg -tiedostoa apu1.prg ja apu2.prg:
apu1.prg:
num1=1
? "Nyt on",num1
dorun("apu2.dmf")
? "Ja lopuksi",num1
ja vastaavasti apu2.prg, joka suositetaan alemmalla tasolla:
num1=3
? "Täällä on",num1
Tällöin kuvaruutuun tulee:
Nyt on 1
Täällä on 3
Ja lopuksi 3
Jos on apu1.prg on (apu2.prg on sama kuin edellä):
apu1.prg:
num1=1
? "Nyt on",num1
dorun("apu2.dmf",3)
? "Ja lopuksi",num1
Tällöin kuvaruutuun tulee:
Nyt on 1
Täällä on 3
Ja lopuksi 1
Nyt siis aliohjelma ei palauta num1 arvoa ylemmälle tasolle.
Jos on apu1.prg on (apu2.prg on sama kuin edellä):
apu1.prg:
num1=1
? "Nyt on",num1
apu5=dorun("apu2.dmf",5,0) /* apu2.dmf ladataan erilliseen muistialue -tasoon - sitä ei suoriteta */
dorun("",19,apu5) /* apu2.dmf suoritetaan erillisestä muistista, joka on pidikkeessä apu5 */
? "Ja lopuksi",num1
dorun("",7,apu5) /* vapautetaan apu2.dmf muisti */
Tällöin kuvaruutuun tulee:
Nyt on 1
Täällä on 3
Ja lopuksi 1
Nyt siis aliohjelma ei palauta num1 arvoa ylemmälle tasolle.