<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wikis.ch.cam.ac.uk/ro-walesdocs/wiki/index.php?action=history&amp;feed=atom&amp;title=CamCASP%2FCodeExamples%2FDirectAccess</id>
	<title>CamCASP/CodeExamples/DirectAccess - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wikis.ch.cam.ac.uk/ro-walesdocs/wiki/index.php?action=history&amp;feed=atom&amp;title=CamCASP%2FCodeExamples%2FDirectAccess"/>
	<link rel="alternate" type="text/html" href="https://wikis.ch.cam.ac.uk/ro-walesdocs/wiki/index.php?title=CamCASP/CodeExamples/DirectAccess&amp;action=history"/>
	<updated>2026-04-12T04:36:21Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://wikis.ch.cam.ac.uk/ro-walesdocs/wiki/index.php?title=CamCASP/CodeExamples/DirectAccess&amp;diff=1236&amp;oldid=prev</id>
		<title>Adk44: Created page with &quot;&lt;pre&gt;  program directaccess !Write a direct access file and read it. !Written with the hope of tracing a bug in gfortran - if it is a bug! implicit none integer, parameter ::...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wikis.ch.cam.ac.uk/ro-walesdocs/wiki/index.php?title=CamCASP/CodeExamples/DirectAccess&amp;diff=1236&amp;oldid=prev"/>
		<updated>2019-05-13T10:30:26Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;pre&amp;gt;  program directaccess !Write a direct access file and read it. !Written with the hope of tracing a bug in gfortran - if it is a bug! implicit none integer, parameter ::...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
program directaccess&lt;br /&gt;
!Write a direct access file and read it.&lt;br /&gt;
!Written with the hope of tracing a bug in gfortran - if it is a bug!&lt;br /&gt;
implicit none&lt;br /&gt;
integer, parameter :: dp = kind(1d0)&lt;br /&gt;
!integer, parameter :: reclen = 32760     !record length&lt;br /&gt;
integer :: reclen&lt;br /&gt;
integer, parameter :: maxlen = 2728      !max len of arrays x() n() in a rec&lt;br /&gt;
integer, parameter :: lenval = maxlen + 1366&lt;br /&gt;
character(30) :: filename=&amp;#039;tmp_directaccess.tmp&amp;#039;&lt;br /&gt;
integer :: fileunit&lt;br /&gt;
integer :: stat, numrows, i, j&lt;br /&gt;
real(dp), dimension(100000) :: values&lt;br /&gt;
character(80) :: accesstype, fileform&lt;br /&gt;
logical :: iexist&lt;br /&gt;
integer :: recordlen, next_rec, num_entries&lt;br /&gt;
&lt;br /&gt;
fileunit = 7&lt;br /&gt;
&lt;br /&gt;
print *,&amp;#039;Number of rows &amp;#039;&lt;br /&gt;
read *,numrows&lt;br /&gt;
&lt;br /&gt;
reclen=numrows*dp + 4 + 4&lt;br /&gt;
print *,&amp;#039;reclen = &amp;#039;,reclen&lt;br /&gt;
&lt;br /&gt;
open(fileunit,file=filename,status=&amp;#039;unknown&amp;#039;,access=&amp;#039;direct&amp;#039;,&amp;amp;&lt;br /&gt;
    recl=reclen,form=&amp;#039;unformatted&amp;#039;,action=&amp;#039;readwrite&amp;#039;,iostat=stat)&lt;br /&gt;
print *,trim(filename),&amp;#039; open with stat = &amp;#039;,stat&lt;br /&gt;
&lt;br /&gt;
do i = 1, numrows&lt;br /&gt;
  do j = 1, numrows&lt;br /&gt;
    values(j) = real(i+j,kind=dp)&lt;br /&gt;
  enddo&lt;br /&gt;
  write(fileunit,rec=i)i+1, maxlen, values(1:numrows)&lt;br /&gt;
enddo&lt;br /&gt;
&lt;br /&gt;
close(fileunit)&lt;br /&gt;
&lt;br /&gt;
! Overwrite:&lt;br /&gt;
&lt;br /&gt;
numrows = numrows + 1000&lt;br /&gt;
reclen=numrows*dp + 4 + 4&lt;br /&gt;
print *,&amp;#039;reclen = &amp;#039;,reclen&lt;br /&gt;
&lt;br /&gt;
open(fileunit,file=filename,status=&amp;#039;unknown&amp;#039;,access=&amp;#039;direct&amp;#039;,&amp;amp;&lt;br /&gt;
    recl=reclen,form=&amp;#039;unformatted&amp;#039;,action=&amp;#039;readwrite&amp;#039;,iostat=stat)&lt;br /&gt;
print *,trim(filename),&amp;#039; open with stat = &amp;#039;,stat&lt;br /&gt;
&lt;br /&gt;
do i = 1, numrows&lt;br /&gt;
  do j = 1, numrows&lt;br /&gt;
    values(j) = real(i+2*j,kind=dp)&lt;br /&gt;
  enddo&lt;br /&gt;
  write(fileunit,rec=i)i+1, maxlen, values(1:numrows)&lt;br /&gt;
enddo&lt;br /&gt;
&lt;br /&gt;
close(fileunit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
open(fileunit,file=filename,status=&amp;#039;unknown&amp;#039;,access=&amp;#039;direct&amp;#039;,&amp;amp;&lt;br /&gt;
    recl=reclen,form=&amp;#039;unformatted&amp;#039;,action=&amp;#039;read&amp;#039;,iostat=stat)&lt;br /&gt;
&lt;br /&gt;
inquire(file=filename,exist=iexist,access=accesstype,form=fileform,&amp;amp;&lt;br /&gt;
   recl=recordlen)&lt;br /&gt;
print *,&amp;#039;Inquire: exists= &amp;#039;,iexist&lt;br /&gt;
print *,&amp;#039;       : access= &amp;#039;,trim(accesstype)&lt;br /&gt;
print *,&amp;#039;       : form  = &amp;#039;,trim(fileform)&lt;br /&gt;
print *,&amp;#039;       : reclen= &amp;#039;,recordlen&lt;br /&gt;
&lt;br /&gt;
do i = 1, min(10,numrows)&lt;br /&gt;
  read(fileunit,rec=i,iostat=stat)next_rec,num_entries,values(1:numrows)&lt;br /&gt;
  print &amp;#039;(1x,a,4(i6,1x))&amp;#039;,&amp;#039;rec and stat &amp;#039;,i,stat,next_rec,num_entries&lt;br /&gt;
  print &amp;#039;(a,10(f5.1,1x))&amp;#039;,&amp;#039;    vals: &amp;#039;,values(1:10)&lt;br /&gt;
enddo&lt;br /&gt;
do i = max(1,numrows-10),max(10,numrows)&lt;br /&gt;
  read(fileunit,rec=i,iostat=stat)next_rec,num_entries,values(1:numrows)&lt;br /&gt;
  print &amp;#039;(1x,a,4(i6,1x))&amp;#039;,&amp;#039;rec and stat &amp;#039;,i,stat,next_rec,num_entries&lt;br /&gt;
  print &amp;#039;(a,10(f10.1,1x))&amp;#039;,&amp;#039;    vals: &amp;#039;,values(1:10)&lt;br /&gt;
enddo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
close(fileunit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end program directaccess&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
--[[User:am592|alston]] 12:10, 14 May 2010 (BST)&lt;/div&gt;</summary>
		<author><name>Adk44</name></author>
	</entry>
</feed>