Дана программа, генерирующая также определенные программы на Паскале (подробнее fastproger.moy.su)
Однако, вес этой программы ранее составлял около 64 кб в одном файле, и Борланд Паскаль, который я использовал, не тянул компилить файлы весом более 64 кб с чем-то там.
В общем, я решил перейти на модульную основу, однако ни в Турбо Паскале, ни в ФриПаскале наладить подключение модулей не смог.
В Турбо инициализация модуля проходила, но компилятор зависал на подключении процедур, написав, что не знает, откуда эта процедура (unknown identifier)
В ФриПаскале модули вообще не подключаются - пишет, что не может их найти.
Модули лежат в одной папке с компилируемым файлом. Полная версия программы в архиве, тут - начало самой программы и исходник одного из модулей.
//Программа program fastproger; uses fpg_id1, fpg_id2, fpg_id3, fpg_id4, fpg_id5, fpg_id6, fpg_id7, fpg_id8, fpg_id9, fpg_id10, fpg_id11, fpg_id12, fpg_id13, fpg_id14, fpg_id15, fpg_id16, fpg_id17, fpg_id18, fpg_id19, fpg_id20, fpg_id21, fpg_id22, fpg_id23, fpg_id24, fpg_id25, fpg_id26, fpg_id27, fpg_id28, fpg_id29, fpg_id30, fpg_id31, fpg_id32, fpg_id33, fpg_id34, fpg_id35, fpg_id36, fpg_id37, fpg_id38, fpg_id39, fpg_id40, fpg_id41, fpg_id42, fpg_id43, fpg_id44, fpg_id45, fpg_id46, fpg_id47, fpg_id48, fpg_id49, fpg_id50, fpg_id51, fpg_id52, fpg_id53, fpg_id54, fpg_id55; var a,b,c,d,e,f,g,h,i,j,k,l,m,n,u,v,w,x,y,z,z1:integer; {struktura programmy} o:string; {funkzia v program id=1} p:string; {apostrof dlya zapisi v programmy} q:string; {dlya zapisi znaka v programmy s masivami} r:real; {dlya zapisi chisla c programmy s masivami} s:string; {znak raboty s neravenstvami} file1:text; {file dlya zapisi dannyh} logfile:text; {log file} id:string; {id procedury dlya zapisi v logi} t:string; {imya file, v kotoruy generiruetsya proga} procedure logwrite; {zapis deystviya v logi} begin assign(logfile,'logfile.txt'); append(logfile); writeln(logfile,'sgenerirovana programma ',id,' v file ',t); close(logfile); end; procedure logwrite2; {zapis oshibki} begin assign(logfile,'logfile.txt'); append(logfile); writeln(logfile,'Dopushena oshibka pri rabote s programmoy!'); close(logfile); end; begin ... end.
//Модуль unit fpg_id1; interface implementation procedure fpg_id_1; var file1:text; o,p,id,t:string; begin assign(file1,t); rewrite(file1); id:='fpg_id_1'; writeln(file1,'program fpg_id_1;'); writeln(file1,' var x,y:real;'); writeln(file1,'begin'); writeln(file1,' writeln(',p,'vvedite x',p,');'); writeln(file1,' readln(x);'); writeln(file1,' y:=',o,';'); writeln(file1,' writeln(',p,'znachenie funkzii ',p,',y:1:2);'); writeln(file1,' readln;'); writeln(file1,'end.'); close(file1); end; end.