Есть два способа исправить - плохой и хороший.
Плохой:
Дописать в конце программы (перед writeln) line_out[0]:=d;
Хороший: добавлять символы в line_out вот так: line_out:=line_out+line_in[j];
Самый лучший: забросить Паскаль куда подальше и изучать СИ.
Причины проблемы: Паскаль хранит длину строки в символе с индексом[0]. Соответственно, для новой строки эта длина равна неизвестно чему, и writeln не знает, что печатать.
Если же вы что-то запишите в line_out, длина этого чего-то запишется в line_out[0] и все заработает.