Fortran 77 help making an empty array (or blank list if they exist in fortran)

Click For Summary

Discussion Overview

The discussion revolves around creating an empty array in Fortran 77, with the length determined by user input. Participants explore the limitations of Fortran 77 regarding dynamic array allocation compared to other programming languages like Python.

Discussion Character

  • Technical explanation
  • Debate/contested

Main Points Raised

  • One participant seeks guidance on creating an empty array with a length based on user-defined start and end numbers.
  • Another participant notes that Fortran 77 does not support dynamically-allocated arrays and suggests declaring a fixed-size array instead.
  • A participant emphasizes the distinction between interpreted languages like Python and compiled languages like Fortran, highlighting that array lengths must be defined at compile time in Fortran.
  • Some participants mention that certain implementations of Fortran 77 may have extensions for dynamic memory allocation using POINTER statements and functions like MALLOC, though this is not standard.
  • One participant recommends using Fortran 90 or later versions, which support allocatable arrays and dynamic sizing.
  • Another suggestion involves initializing a large fixed-size array with zeros and calculating the size based on user input, allowing for a workaround to the limitations of Fortran 77.

Areas of Agreement / Disagreement

Participants generally agree that Fortran 77 lacks support for dynamic arrays, but there are differing opinions on potential workarounds and the use of extensions. Some suggest moving to later versions of Fortran for more flexibility, while others discuss possible methods within the constraints of Fortran 77.

Contextual Notes

Limitations include the fixed nature of array sizes in Fortran 77, the reliance on compiler-specific extensions for dynamic allocation, and the potential need for users to adapt to newer versions of Fortran for more advanced features.

1ytrewq
Messages
5
Reaction score
0
I need to create an empty array but the length of the array is determined by the start and end numbers entered by the user

for example if the range of numbers the user was interested in was 4-10 inclusive then i want the array to be of length 7

How to I go about doing this?

Other languages (Python for example) have the option to create an empty list and then values can be added to the list as many times as is required. Is there any similar function in fortran 77?

Thanks in advance for any help!
 
Technology news on Phys.org
Fortran 77 doesn't have dynamically-allocated arrays. You have to anticipate the maximum bounds of the array, and declare it accordingly. You can declare

REAL MYARRAY(4:10)

which allocates memory for seven REALs, MYARRAY(4) through MYARRAY(10), but this allocation is fixed.
 
Last edited:
1ytrewq said:
I need to create an empty array but the length of the array is determined by the start and end numbers entered by the user

for example if the range of numbers the user was interested in was 4-10 inclusive then i want the array to be of length 7

How to I go about doing this?

Other languages (Python for example) have the option to create an empty list and then values can be added to the list as many times as is required. Is there any similar function in fortran 77?

Thanks in advance for any help!

Remember that an interpreted language like python has somewhat of an advantage over a compiled language like fortran in this regard, since you don't have quite the same distinction between compile time and run time with an interpreter. In fortran array lengths have to be defined at compile time.
 
Many implementations of Fortran 77 have extensions to handle dynamic memory allocation, using a POINTER statement to declare the variables and a function (probably called MALLOC} to allocate space. This isn't "ANSI standard Fortran 77", but enough compilers support for it to be a de facto portable standard. Of course if you only plan to run your code on your own computer system, you might not care if it is portable, so long as it works for you!
 
1ytrewq said:
I need to create an empty array but the length of the array is determined by the start and end numbers entered by the user

for example if the range of numbers the user was interested in was 4-10 inclusive then i want the array to be of length 7

How to I go about doing this?

You should try that in Fortran 90 or later compiler,
which have allocatable arrays. Even later versions (after Fortran 95)
have allocate on assignment, arrays can grow.

There are several free Fortran 95 compilers.
 
If you're going to use it to store numbers, then maybe you could make it an array of 0's. You could probably define an array of some large dimension, and then when you get the limits (4-10, in your example) from the user, you could calculate the difference between them and make a zeros array of that size. If your user inputs 4&10, say, then you could calculate the difference of the two (you might want to add 1 to it to make it inclusive). If d is the difference between the two, then maybe you could generate an array(d) with all zeros using a do-loop.

Hope this was useful.
 

Similar threads

  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 7 ·
Replies
7
Views
5K
Replies
7
Views
3K
  • · Replies 17 ·
Replies
17
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 4 ·
Replies
4
Views
3K
Replies
5
Views
4K
  • · Replies 1 ·
Replies
1
Views
4K
  • · Replies 13 ·
Replies
13
Views
4K