kompilace maleho projektu o vice zdrojovych kodech:
pro maly projekt, ktery ma jen par zdrojovych kodu staci obvykle kazdy zdrojovy kod kompilovat
samostatne pomoci 'dc program'. kazdy zdrojovy kod, ktery neobsahuje proceduru main() by mel
obsahovat volbu 'OPT NOEXE', aby se vytvoril pouze linkovaci objekt, nikoliv spustitelny soubor
(ktery by stejne nesel zkompilovat kvuli chybejici procedure main() ). v nasem pripade staci
pridat pouze dane moduly:
hlavni zdrojovy kod nazveme main.d:
MODULE '*read','*save'
PROC main()
read()
save('ram:file.txt')
ENDPROC
dalsi zdrojovy kod nazveme read.d:
OPT NOEXE
DEF str[32]:STRING
PROC read()
WriteF('Enter a string: ')
ReadEStr(stdout,str)
ENDPROC
a posledni zdrojovy kod nazveme save.d:
OPT NOEXE
MODULE '*read'
PROC save(name)
DEF f
IF f:=Open(name,NEWFILE)
Write(f,str,StrLen(str))
Close(f)
ENDIF
ENDPROC
tomto jsou nase zdrojove kody hotove. hlavni zdrojovy kod, respektive procedura main() pouziva
obe procedury z ostatnich zdrojovych kodu jak read.d tak save.d. nyni tedy musime vytvorit
moduly s referencemi, aby bylo mozne moduly save.d a read.d pouzit i mimo je samotne. prvni
zdrojak read.d obsahuje promennou str. funkce read() vypise text, a ceka na zadani retezce pro
ulozeni do promenne str. druhy zdrojak save.d otevre soubor 'ram:file.txt' pro zapis, a zapise
to nej obsah promenne str, ktera v tomto zdrojovem kodu neni definovana, a proto je potreba
i zde pouzit referencni modul (MODULE '*read') aby promenna existovala.
nyni musim zkompilovat zdrojoe kody, nejdrive musime zkompilovat read.d, protoze jeho reference
je pouzita v obouch zbylich zdrojovych kodech. v cli napiste:
1.> dc read gm
ted, pokud je vsechno v poradku se muzete podivat, ze je vytvoren novy soubor read.m, ktery obsahuje:
OPT LINK='*read.o'
EPROC read()
EDEF str:PTR TO CHAR
pak napiste:
1.> dc save gm
ted, pokud je vsechno v poradku se muzete podivat, ze je vytvoren novy soubor save.m, ktery obsahuje:
OPT LINK='*save.o'
EPROC save(name)
a nyni:
1.> dc main
ted, pokud je vsechno v poradku napiste nasledujici, a pak nejaky text:
1.> main
Enter a string: hello world
a nyni je v ram disku nazvane file.txt, ktere obsahuje Vami napsany retezec.