- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
i'm with an IOSTAT 43 on OPEN a .txt file containing the numbers 4.0 -9.0 2.0 2.0 -4.0 4.0 -1.0 2.0 2.0. Someone can help me?
program LU implicit none character*300 :: filename integer :: ul,erro,dim,i,j,k real*8,dimension(:,:),allocatable :: a,l,u real*8,dimension(:),allocatable :: x,y,b filename = '' ul = 3 erro = 0 dim = 0 !matriz A write(*,'(A)') 'Informe o nome do arquivo que contém a matriz A:' read(*,'(A)') filename write(*,'(A)') 'Informe a dimensão da matriz:' read(*,'(I)') dim allocate(A(dim,dim)) allocate(l(dim,dim)) allocate(u(dim,dim)) a = 0.0 l = 0.0 u = 0.0 open(ul,file=filename,status='old',action='read',iostat=erro, +form='formatted') if(erro.gt.0) write(*,10)erro read(ul,'(F)') a
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
43 is "File name specification error". The variable filename may not have a valid filespec in it. I'll also comment that Windows generally has a 256-byte limit on filespecs, though trailing blanks would be ignored. If the user entered Unicode characters that could cause a problem - Intel Fortran does not yet support non-ASCII characters in file specifications.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Look into the facilities the language provides with OPEN statement:
https://software.intel.com/en-us/fortran-compiler-18.0-developer-guide-and-reference-open
and try using IOMSG and look into what the processor tells you about IOSTAT error 43:
.. character(len=XX) :: imsg !<-- some suitable length, say XX=256 .. open(ul,file=filename,status='old',action='read',iostat=erro, +form='formatted', iomsg=imsg) if (erro > 0) then write(*,10) erro write(*,10) imsg ..
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Or remove the IOSTAT= and look at the name in the full error message. Or print the contents of "filename" after it is read.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I was using a folder with a name containing space on it and don't realized that this is a problem on fortran! I put the iomsg= to, very useful and i didn't know about.
Thank you very much!!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Fortran doesn't have problems with spaces in folder names.
D:\Projects>type t.f90 character(50) :: fnam,fspec fnam = "C:\Test Folder\test.txt" open (unit=1,file=fnam) inquire (1,name=fspec) print *, fspec end D:\Projects>ifort t.f90 Intel(R) Visual Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 17.0.4.210 Build 20170411 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. Microsoft (R) Incremental Linker Version 14.00.24210.0 Copyright (C) Microsoft Corporation. All rights reserved. -out:t.exe -subsystem:console t.obj D:\Projects>t.exe C:\Test Folder\test.txt D:\Projects>
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I will try it! Thak you very much Steve!
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page