How to run fortran77 program with inputs from file?
I made the following program file prog.f
program test
character IN*30,OUT*30,line*80
PRINT *,'Input file '
READ(*,'(A)') IN
OPEN(1,FILE=IN,STATUS='OLD')
PRINT *,'Output file?'
READ(*,'(A)') OUT
OPEN(2,FILE=OUT,STATUS='NEW',BLANK='ZERO')
read (1,'(a80)') line
write (2,*) "I read ", line
end
compiled & linked it with
gfortran prog.f -o prog
I put a text string into an input file
echo "Hello World" > in
Then I sent the names of the input file in
and output file out
to the program
$ <<< 'in
out' ./prog
Input file
Output file?
and checked the output file
$ cat out
I read Hello World
<<<
works in bash
. You may prefer piping from echo
which is more portable,
$ rm out
rm: remove normal file 'out'? y
$ echo 'in
out' | ./prog
Input file
Output file?
$ cat out
I read Hello World
If you are lucky then maybe
<infile ./program >outfile
will work. Redirection to give a filedescriptor. Options/arguments???
While we earthlings write something like...
$ <77in cat >77.out
$ cat 77in >77.out
(This copies just 77in
to 77.out
)
...this Fortran77 program/command wanted it's operands linewise in one input file/stream:
$ <77.io cat
77in
77.out
Now if cat
was something else it would parse first line as input file (containing "hello\nworld" eg.) and the second as file to create.
And that is just the newer, easy way it seems...
Instead of a long argument list like cp -a dir1 dir2 dest
it is <in_list cpa77
.
But then you need an additional file...just like modern cpio
does:
<filelist cpio -o >files.cpio
. Of course cpio
just needs STDIN linewise:
find . | cpio -o >files.cpio
(cpio
has this special call syntax because of its functioning, working with many files. It is one command and a half. Same for tar
, in a different way)
If anything is typical of unix, then it is this flexibility in feeding control and data to commands in the shell. As I commented: good Q after all! (Thx to accepted answer!)