# [Fortran (GFortran)] `-cpp`, <s>409</s>... 312 bytes ```lang-sh #define w' on the wall' #define p trim(x),trim(b) character(16)a,b,c,x a=' bottles of beer';b=a;c=' bottle of beer' do i=99,1,-1 write(x,'(i0)')i if(i<2)b=c if(i<99)print*,'Take one down, pass it around, ',p,w,'.',new_line(x) print*,p,w,', ',p,'.' enddo print*,'Go to the store and buy some more, 99',a,w,'.' end ``` [Try it online!][1] The `-cpp` option allows me to `#define` macros. Maybe one day Fortran will have stretchy strings but for now I have to use `trim()` everywhere.<br> [Fortran (GFortran)]: https://gcc.gnu.org/fortran/ [TIO-lxkotvjd]: https://tio.run/##PVDLboQwDLznKyz1ELIyleihEmI59wd6r5zXblpIUBIE/fnSFLqcPBqPZ0a2IeZIvr7ZA2zbkzbWeQMLh@Ah3wuiYeDswU@QoxurVeA@pWDqTpFUNrFqXgWhRIUro56DDDkPJkGwII2JvJM9depcnDzTAVzftthg3bAlumyqFS/CdWtP@nNOeSh5zNnKXdtWTNH5fEH@Tl/Fo1TSYfEIE6UELgPFMHuNwHHCBfkzR2@Wj6F0P01ehOxV9@@zqw55ETPjtQ7skfEWIIf9CymHaIC8Bjl/QwqjgbEwCG3LkY6kv@Nt@1F2oFvaajVNvw "Fortran (GFortran) – Try It Online" [1]: https://tio.run/##PU@7TsQwEOz9FStROEYbRCiQrCM1P0CP1q87i8S2bJ8Sfp5gEu6qHc1Lsy7mmin0Z3eAbXsw1vlgYeEQA9RLQzRNnN34BDX7uVsF7lcJpi@USVebu@FVECrUuDIaOahY62QLRAfK2sxPaqSTvgt3npkIfpQSB@wHtmRfbbci7/yz4MIz7zr/9iLUqA8opUjZh/qI/IO@Wk1bZeISEBKVAr4C5XgNBoFjwgX5E8dgl8@pzW@72X94lw5PczAbjIk3jb9HqHH/vtSYLVAwoK7fUOJsYW4MgpQc6aj/C2/bj3YTncvW65R@AQ