Currently gfortran checks the array descriptor of an interanl unit and only allows IO if the stride is 1 and all records are contiguous. Further review of the F95 Standard finds section 9.2.2.1 which clarifies the requirement. (I did not interpret this right on the first go around).
I have a patch in the works and will submit after Jakub's thread safe IO patch goes in. The following example compiles and runs with ifort, gives a runtime error with gfortran. ! { dg-do run } ! Test formatted input/output to/from character arrays with strides ! other than 1. program arrayio_6 implicit none integer :: i(6),j,k character(12) :: r(16,2) = '0123456789AB' i = (/(j,j=1,6)/) write(r(1:16:2,1),'(3(2x,i4/)/3(3x,i6/))') i print *, r end program arrayio_6 -- Summary: Generalized internal array IO not implemented. Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: libfortran AssignedTo: jvdelisle at gcc dot gnu dot org ReportedBy: jvdelisle at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24224