むかしBasic->Fortranコンバータ書いたのでちょっと補足。
・再帰ができないので、自分で必要なだけラベルを作り、割当型分岐と自前の
 スタックポインタで分岐のエミュレーションをする。
・#defineはプリプロセッサを作るか、前述の方のとおりcppだけ通す
・とにかく手作業を減らすためにちょっとでも言葉の置き換えできる
 プロセッサを作って通す。時間があればそれを完璧にすればいいけど、
 無理だからあとは力技が早いよ:)