I've never been good at poetry... so I've started using Fortran to help me. Getting the right number of syllables in each line has always been tricky, so sometimes I skip over bits, and then fill them in later.
PROGRAM poetic_streaming
IMPLICIT NONE
INTEGER :: unit
INTEGER :: pos
OPEN( &
NEWUNIT=unit, &
FILE='poetry.txt', &
FORM='FORMATTED', &
ACCESS='STREAM', &
ACTION='WRITE', &
STATUS='REPLACE' )
WRITE (unit, "(A)", ADVANCE='NO') 'Mary had a '
! Remember where we are and leave a placeholder for now.
INQUIRE(unit, POS=pos) ; print *, pos
WRITE (unit, "(A7)", ADVANCE='NO') ''
WRITE (unit, "(A)") ' processor'
WRITE (unit, "(A)") 'ifort was its name'
WRITE (unit, "(A)") 'but support for querying the file position after non-advancing formatted stream access output was broken'
WRITE (unit, "(A)") 'so she had to rethink her game'
WRITE (unit, "(A7)", POS=pos, ADVANCE='NO') 'Fortran'
CLOSE(unit)
END PROGRAM poetic_streaming
Alas...
>ifort /check:all /warn:all /standard-semantics "2015-11-21 poetic_streaming.f90"&& "2015-11-21 poetic_streaming.exe"&& type poetry.txt Intel(R) Visual Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 16.0 Build 20151021 Copyright (C) 1985-2015 Intel Corporation. All rights reserved. Microsoft (R) Incremental Linker Version 10.00.40219.01 Copyright (C) Microsoft Corporation. All rights reserved. "-out:2015-11-21 poetic_streaming.exe" -subsystem:console"2015-11-21 poetic_streaming.obj" 1 Fortran a processor ifort was its name but support for querying the file position after non-advancing formatted stream access output was broken so she had to rethink her game
I think I spy a stray newline in there too.