ഫോർട്രാൻ

ഒരു വിവിധോദ്ദേശ്യ  പ്രോഗ്രാമിങ് ഭാഷയാണ് **ഫോർട്രാൻ** (*ഇംഗ്ലീഷിൽ മുൻപ് FORTRAN എന്ന് മുഴുവൻ വലിയ അക്ഷരത്തിലെഴുതിയിരുന്നെങ്കിലും ഇപ്പോൾ Fortran എന്നാണ് ഉപയോഗിക്കുന്നത്*). പലതരം കമ്പ്യൂട്ടർ രൂപകൽപ്പനകളിൽ വ്യാപകമായി ഉപയോഗിക്കപ്പെട്ട ആദ്യത്തെ ഹൈലെവൽ പ്രോഗ്രാമിങ് ഭാഷയാണ് ഫോർട്രാൻ. ഗണിതക്രിയകൾക്കും ഗവേഷണകാര്യങ്ങൾക്കുമാണ് ഇത് കൂടുതൽ യോജിക്കുന്നത്. ശാസ്ത്രസാങ്കേതികരംഗത്തെ ഉപയോഗങ്ങൾക്കായി 1950-കളിൽ ഐ.ബി.എം. ആണ് കാലിഫോർണിയയിലെ തെക്കൻ സാൻ ഹോസെയിൽ വച്ച് ഈ ഭാഷ വികസിപ്പിച്ചത്. പ്രോഗ്രാമിങ്ങിന്റെ മേൽപ്പറഞ്ഞ മേഖലകളിൽ തുടക്കം മുതലേ ആധിപത്യം സ്ഥാപിച്ച ഈ ഭാഷ കഴിഞ്ഞ അരനൂറ്റാണ്ടുകാലമായി കാലാവസ്ഥാപ്രവചനം, ഫൈനൈറ്റ് എലെമെന്റ് അനാലിസിസ്, കമ്പ്യൂട്ടേഷണൽ ഫ്ലൂയിഡ് ഡൈനമിക്സ്, കമ്പ്യൂട്ടേഷണൽ ഫിസിക്സ്, കമ്പ്യൂട്ടേഷണൽ കെമിസ്ട്രി തുടങ്ങിയ തീക്ഷ്ണമേഖലകളിൽ ഉപയോഗിക്കപ്പെട്ടുവരുന്നു. മികച്ച കമ്പ്യൂട്ടിങ് പ്രകടനം ആവശ്യമായ മേഖലകളിലെ ഏറ്റവും പ്രശസ്തമായ ഭാഷകളിലൊന്നാണിത് ലോകത്തെ ഏറ്റവും വേഗതയേറിയ സൂപ്പർ കമ്പ്യൂട്ടറുകളെ നിർണ്ണയിക്കുന്നതിനും മറ്റുമുള്ള പ്രോഗ്രാമുകൾ എഴുതുന്നതിനും ഫോർട്രാൻ ഉപയോഗിക്കപ്പെടുന്നു. *ദ് ഐ.ബി.എം. മാത്തെമറ്റിക്കൽ *'ഫോർ**മുല **ട്രാൻ**സ്ലേറ്റിങ് സിസ്റ്റം'' എന്നതിൽ നിന്നാണ് ഫോർട്രാൻ എന്ന പേരുണ്ടായത്.

ഫോർട്രാന് പതിപ്പുകളുടെ വിപുലമായ പരമ്പരയുണ്ട്. ഓരോ പതിപ്പും ഭാഷയിൽ കൂടുതൽ സൗകര്യങ്ങൾ ചേർത്തുകൊണ്ടും ഒപ്പം മുൻപതിപ്പുകളുമായി യോജിപ്പ് നിലനിർത്തിയുമാണ് വികസിച്ചുവന്നത്. [[structured programming|ഘടനാപരമായ പ്രോഗ്രാമിങ്]], അക്ഷരരൂപത്തിലുള്ള വിവരങ്ങളുടെ സംസ്കരണം ([[FORTRAN 77|ഫോർട്രാൻ77]]), [[array programming|അരേ പ്രോഗ്രാമിങ്]], [[modular programming|മോഡുലർ പ്രോഗ്രാമിങ്]], [[generic programming|ജെനറിക് പ്രോഗ്രാമിങ്]] ([[Fortran 90|ഫോർട്രാൻ 90]]), [[High Performance Fortran|ഹൈ പെർഫോമൻസ് ഫോർട്രാൻ]] ([[Fortran 95|ഫോർട്രാൻ 95]]), [[object-oriented programming|ഓബ്ജക്റ്റ് ഓറിയെന്റഡ് പ്രോഗ്രാമിങ്]] ([[Fortran 2003|ഫോർട്രാൻ 2003]]), [[concurrent programming|കൺകറണ്ട് പ്രോഗ്രാമിങ്]] ([[Fortran 2008|ഫോർട്രാൻ 2008]]) തുടങ്ങിയവ ഫോർട്രാൻ പതിപ്പുകളിൽ കാലക്രമേണ കൂട്ടിച്ചേർക്കപ്പെട്ട സൗകര്യങ്ങളാണ്.

== പേരിലെ വലിയക്ഷരം ==
[[ഫോർട്രാൻ 77]] വരെയുള്ള ആദ്യകാല ഫോർട്രാൻ പതിപ്പുകളുടെ പേര് ഇംഗ്ലീഷിൽ മുഴുവൻ വലിയക്ഷരത്തിലായിരുന്നു (**FORTRAN**) എഴുതിയിരുന്നത്. (''പ്രോഗ്രാമിനകത്തുപയോഗിക്കുന്ന [[കീവേഡ്|കീവേഡുകൾക്ക്]] ചെറിയക്ഷരം ഉപയോഗിക്കുന്നത് ഫോർട്രാൻ 77 പതിപ്പിന്റെ മാനകപ്രകാരം ഒട്ടും അനുവദനീയവുമല്ല''). പേരിൽ മൊത്തം വലിയക്ഷരം ഉപയോഗിക്കുന്ന രീതി [[ഫോർട്രാൻ 90]] പതിപ്പോടെ ഉപേക്ഷിക്കപ്പെട്ടു. [[international standard|ഔദ്യോഗികമാനകങ്ങളിൽ]] ഇപ്പോൾ ഈ ഭാഷയെ **Fortran** എന്നാണ് പരാമർശിക്കുന്നത്. അതുകൊണ്ട് ഇപ്പോൾ ഫോർട്രാൻ 77 വരെയുള്ള പതിപ്പുകളെ സൂചിപ്പിക്കുന്നതിന് FORTRAN എന്നും അതിനുശേഷമുള്ള പതിപ്പുകളെ (ഫോർട്രാൻ 90 മുതലുള്ളവ) പരാമർശിക്കുന്നതിന് Fortran എന്നും എഴുതുന്ന രീതി പതിവുണ്ട്. വിവിധ [[ആൻസി]], [[ഐ.എസ്.ഒ./ഐ.ഇ.സി.]] മാനകപ്രമാണങ്ങളും ഈ രീതി പിന്തുടരുന്നുണ്ട്.
==ചരിത്രം==

1953-ന്റെ അവസാനം [[ഐ.ബി.എം.|ഐ.ബി.എമ്മിലെ]] ജീവനക്കാരനായിരുന്ന [[ജോൺ ബാക്കസ്]], [[ഐ.ബി.എം. 704]] മെയിൻഫ്രെയിം കമ്പ്യൂട്ടറിനുവേണ്ടി പ്രോഗ്രാമുകൾ തയ്യാറാക്കുന്നതിനായി [[അസെംബ്ലി ഭാഷ|അസെംബ്ലി ഭാഷക്കു]] പകരമായി കൂടുതൽ പ്രായോഗികമായ ഒരു ബദൽ വികസിപ്പിക്കാനുള്ള നിർദ്ദേശം തന്റെ മേലുദ്യോഗസ്ഥർക്ക് സമർപ്പിച്ചു. ചരിത്രമായി മാറിയ ഈ ദൗത്യത്തിൽ ബാക്കസിനോടൊപ്പം പ്രോഗ്രാമർമാരായ റിച്ചാഡ് ഗോൾഡ്ബെർഗ്, ഷെൽഡൻ എഫ്. ബെസ്റ്റ്, ഹാർലാൻ ഹെറിക്, പീറ്റർ ഷെറിഡൻ, [[Roy Nutt|റോയ് നട്ട്]], റോബർട്ട് നെൽസൻ, ഇർവിങ് സില്ലെർ, [[Lois Haibt|ലോയിസ് ഹൈബ്]], [[David Sayre|ഡേവിഡ് സൈർ]] എന്നിവരും പങ്കുചേർന്നു. സമവാക്യങ്ങളെ എളുപ്പത്തിൽ കമ്പ്യൂട്ടറിലേക്ക് കയറ്റുക എന്ന  [[J. Halcombe Laning|ജെ. ഹാൾകോമ്പ് ലേനിങ്]] വികസിപ്പിക്കുകയും 1952-ൽ അദ്ദേഹം തന്നെ ജോർജ് എന്ന [[കമ്പൈലർ|കമ്പൈലറിൽ]] അവതരിപ്പിച്ചതുമായ ആശയമാണ് ഈ പദ്ധതിയുടെയും അടിസ്ഥാന ആശയങ്ങളിലൊന്നായിരുന്നത്.

''ദ് ഐ.ബി.എം. മാത്തമറ്റിക്കൽ ഫോർമുല ട്രാൻസ്ലേറ്റിങ് സിസ്റ്റം'' എന്ന ഫോർട്രാന്റെ കരടുരൂപം 1954-ന്റെ പകുതിയോടെ പൂർത്തിയായി. 1956 ഒക്ടോബറിൽ ഫോർട്രാന്റെ ആദ്യ കൈപ്പുസ്തകം (മാനുവൽ) പുറത്തിറക്കി. 1957 ഏപ്രിലിൽ ആദ്യത്തെ ഫോർട്രാൻ [[കമ്പൈലർ|കമ്പൈലറും]] തയ്യാറായി. [[Compiler optimization|കോഡ് ഓപ്റ്റിമൈസേഷൻ]] പിന്തുണയുള്ള ആദ്യത്തെ കമ്പൈലർ ആയിരുന്നു ഇത്. [[അസെംബ്ലി ഭാഷ|അസെംബ്ലി ഭാഷയിൽ]] നേരിട്ടെഴുതുന്ന പ്രോഗ്രാമിനെ അപേക്ഷിച്ച് മെച്ചപ്പെട്ട [[മെഷീൻ കോഡ്]] കമ്പൈലർ തരാതിരുന്നാൽ [[ഹൈലെവൽ ഭാഷ]] തന്നെ ഉപയോക്താക്കൾ ഉപയോഗിക്കുകയില്ലായിരുന്നുവെന്നതിനാൽ ഓപ്റ്റിമൈസേഷൻ വളരെ പ്രധാനപ്പെട്ട കാര്യമായിരുന്നു.

അസെംബ്ലി ഭാഷയിൽ നേരിട്ടെഴുതുന്ന കോഡിനെ വെല്ലാൻ ഈ കമ്പൈലറിനാകുമോ എന്ന ഉപയോക്തൃസമൂഹത്തിന്റെ ആശങ്കക്കിടയിലും, ഒരു പ്രോഗ്രാമിലുപയോഗിക്കുന്ന നിർദ്ദേശങ്ങളുടെ എണ്ണം ഏതാണ്ട് ഇരുപതിലൊന്നായി കുറച്ചുകൊണ്ട് ഫോർട്രാൻ കമ്പൈലർ പെട്ടെന്നുതന്നെ അവർക്കിടയിൽ സ്വീകാര്യത നേടി. ഐ.ബി.എം. ജീവനക്കാരുടെ ''തിങ്ക്'' എന്ന ആനുകാലികത്തിന് 1979-ൽ നൽകിയ ഒരു അഭിമുഖത്തിൽ ജോൺ ബാക്കസ് ഇങ്ങനെ പറയുന്നു: "എന്റെ പണിയുടെ കൂടുതൽ ഭാഗവും മടി മൂലം ഉടലെടുത്തതാണ്. പ്രോഗ്രാമുകളും മറ്റും എഴുതുന്നത് ഞാൻ ഇഷ്ടപ്പെട്ടിരുന്നില്ല. [[ഐ.ബി.എം. 701]]-ൽ മിസൈലുകളുടെ സഞ്ചാരപഥം കണ്ടെത്തുന്നതിനുള്ള പ്രോഗ്രാം എഴുതുമ്പോഴാണ് പ്രോഗ്രാം എഴുത്ത് ലളിതമാക്കുന്നതിനായുള്ള സംവിധാനത്തിനുവേണ്ടിയുള്ള ശ്രമമാരംഭിച്ചത്."

സങ്കീർണ്ണമായ കണക്കുകളുൾപ്പെട്ട പ്രോഗ്രാമുകൾക്കായി ശാസ്ത്രജ്ഞരും മറ്റും ഈ ഭാഷ വ്യാപകമായി ഉപയോഗിക്കാനാരംഭിച്ചു. കൂടുതൽ വേഗതയേറിയതും മെച്ചപ്പെട്ടതുമായ [[മെഷീൻ കോഡ്]] തയ്യാറാക്കുന്ന കമ്പൈലറുകൾ നിർമ്മിക്കാൻ ഇത് കമ്പൈലർ നിർമ്മാതാക്കളെ പ്രേരിപ്പിച്ചു. [[മിശ്രസംഖ്യ|മിശ്രസംഖ്യകളെ]] കൈകാര്യം ചെയ്യാനുള്ള [[ഡാറ്റാടൈപ്പ്]] ഉൾപ്പെടുത്തിയതോടെ ഇലക്ടിക്കൽ എഞ്ചിനീയറിങ് പോലെയുള്ള സാങ്കേതികമേഖലയിലെ ആവശ്യങ്ങൾക്ക് യോജിച്ച ഭാഷയായി ഫോർട്രാൻ മാറി.

1960-ഓടെ [[IBM 709|ഐ.ബി.എം. 709]], [[IBM 650|650]], [[IBM 1620|1620]], [[IBM 7090|7090]] എന്നീ കമ്പ്യൂട്ടറുകൾക്കുവേണ്ടിയുള്ള ഫോർട്രാൻ പതിപ്പുകൾ ലഭ്യമായി. ഫോർട്രാന്റെ ജനപ്രീതി കണക്കിലെടുത്ത് ഐ.ബി.എമ്മിന്റെ എതിരാളികളും അവരവരുടെ കമ്പ്യൂട്ടറുകളിൽ ഫോർട്രാൻ കമ്പൈലർ ഉൾപ്പെടുത്താനാരംഭിച്ചു. അങ്ങനെ 1963-ഓടെ നാൽപതിലധകം ഫോർട്രാൻ കമ്പൈലറുകൾ രംഗത്തുണ്ടായിരുന്നു. ഇക്കാരണം കൊണ്ട് പലതരം കമ്പ്യൂട്ടർ രൂപകൽപനകളെ പിന്തുണക്കുന്നതും വ്യാപകമായി ഉപയോഗിക്കപ്പെട്ടതുമായ ആദ്യത്തെ പ്രോഗ്രാമിങ് ഭാഷയായി ഫോർട്രാൻ കണക്കാക്കപ്പെടുന്നു.

ഫോർട്രാന്റെ വികാസവും ആദ്യകാല [[കമ്പൈലറുകളുടെ വികാസം|കമ്പൈലറുകളുടെ വികാസവും]] സമാന്തരമായാണ് സംഭവിച്ചതെന്നു പറയാം. ഫോർട്രാൻ പ്രോഗ്രാമുകൾക്കുവേണ്ടി മികച്ച [[മെഷീൻകോഡ്]] തയ്യാറാക്കുക എന്ന ആവശ്യമാണ് കമ്പൈലർ രൂപകൽപ്പനയിലെ ഒട്ടേറെ മുന്നേറ്റങ്ങൾക്ക് പ്രേരകഘടകമായി വർത്തിച്ചത്.
===ഫോർട്രാൻ ആദ്യപതിപ്പ്===
ഐ.ബി.എം. 704-നു വേണ്ടിയുള്ള ആദ്യത്തെ ഫോർട്രാൻ പതിപ്പിൽ 32 [[Statement (programming)|നിർദ്ദേശങ്ങളുണ്ടായിരുന്നു]], താഴെയുള്ളവ അവയിൽച്ചിലതാണ്:
* <code>DIMENSION</code>, <code>EQUIVALENCE</code> നിർദ്ദേശങ്ങൾ
* ആരോപണനിർദ്ദേശങ്ങൾ (Assignment statements)
* മൂന്നു വഴി തിരിയുന്ന ഗണിതപരമായ <code>IF</code> നിർദ്ദേശം (Three-way [[Arithmetic IF|''arithmetic'' <code>IF</code>]] statement)
* അപവാദഘട്ടങ്ങളെ (ഉദാഹരണം: (<code>ACCUMULATOR OVERFLOW</code>, <code>QUOTIENT OVERFLOW</code>, and <code>DIVIDE CHECK</code>) കണ്ടെത്തുന്നതിനുള്ള <code>IF</code> നിർദ്ദേശങ്ങളും (statements for checking exceptions)  മുൻകാല കമ്പ്യൂട്ടറുകളിലെ [[front panel|ഫ്രണ്ട്പാനലിലുണ്ടായിരുന്ന]] സെൻസ് സ്വിച്ചുകളും സെൻസ് ലൈറ്റുകളും കൈകാര്യം ചെയ്യുന്നതിനുള്ള <code>IF</code> നിർദ്ദേശങ്ങളും.
* <code>GOTO</code>, കമ്പ്യൂട്ടെഡ് <code>GOTO</code>, <code>ASSIGN</code>, അസൈൻഡ് <code>GOTO</code>
* <code>DO</code> ലൂപ്പുകൾ
* ഫോർമാറ്റെഡ് ഇൻപുട്ട് ഔട്ട്പുട്ട് നിർദ്ദേശങ്ങൾ: <code>FORMAT</code>, <code>READ</code>, <code>READ INPUT TAPE</code>, <code>WRITE</code>, <code>WRITE OUTPUT TAPE</code>, <code>PRINT</code>, <code>PUNCH</code>
* അൺഫോർമാറ്റെഡ് ഇൻപുട്ട് ഔട്ട്പുട്ട് നിർദ്ദേശങ്ങൾ: <code>READ TAPE</code>, <code>READ DRUM</code>, <code>WRITE TAPE</code>,  <code>WRITE DRUM</code>
* മറ്റ് ഇൻപുട്ട് ഔട്ട്പുട്ട് നിർദ്ദേശങ്ങൾ: <code>END FILE</code>, <code>REWIND</code>, <code>BACKSPACE</code>
* <code>PAUSE</code>, <code>STOP</code>, <code>CONTINUE</code> നിർദ്ദേശങ്ഹൾ
* കമ്പൈലറിന് ഒപ്റ്റിമൈസേഷൻ സൂചനകൾ നൽകുന്നതിനുള്ള <code>FREQUENCY</code> നിർദ്ദേശം.

ഫോർട്രാൻ ഭാഷയിലെ ഒരു നിർദ്ദേശത്തെ മെഷീൻ ഭാഷയിലെ വിവിധ നിർദ്ദേശങ്ങളുപയോഗിച്ച് പല രീതിയിൽ സാക്ഷാത്കരിക്കാനാകും. കോഡ് ഓപ്റ്റിമൈസ് ചെയ്യുന്ന ഫോർട്രാൻ കമ്പൈലർ ഏറ്റവും ചുരുങ്ങിയ എണ്ണം നിർദ്ദേശങ്ങളും ഏറ്റവും വേഗത്തിൽ പ്രവർത്തിച്ചു തീരുന്ന രീതിയിലുമുള്ള മെഷീൻ കോഡ് ആയിരിക്കും സാധാരണ തയ്യാറാക്കുക. എങ്കിലും ഗണിതപരമായുള്ള <code>IF</code> പോലുള്ള ബ്രാഞ്ചിങ് നിർദ്ദേശങ്ങളിൽ ഏതു വഴിയിലൂടെയാണ് പ്രോഗ്രാം പ്രവർത്തനം കൂടുതലായും നടക്കാനുള്ള സാധ്യത എന്നു കണ്ടെത്തിയാൽ അതിനു ഏറ്റവും അനുയോജ്യമായ മെഷീൻ കോഡ് നിർദ്ദേശം ഉപയോഗിച്ചുകൊണ്ടുള്ള ഫലം നിർമ്മിക്കാനാകും. ബ്രാഞ്ചിങ് നിർദ്ദേശങ്ങളിൽ ഏതു വഴിയാണ് തിരഞ്ഞെടുക്കാനുള്ള സാധ്യത കൂടുതലുള്ളത് എന്ന് കമ്പൈലറിന് സൂചന നൽകുന്നതിനാണ് <code>FREQUENCY</code> എന്ന നിർദ്ദേശം ഫോർട്രാനിൽ ഉപയോഗിച്ചത്.
==== ദൃഢവിന്യാസം====

[[ഡിസ്ക് ഫയൽ|ഡിസ്ക് ഫയലുകളുടെയും]] [[ടെക്സ്റ്റ് എഡിറ്റർ|ടെക്സ്റ്റ് എഡിറ്ററുകളുടെയും]] [[കമ്പ്യൂട്ടർ ടെർമിനൽ|ടെർമിനലുകളുടെയും]] ആവിർഭാവത്തിനുമുമ്പ് ഒരു [[കീപഞ്ച്]] കീബോഡ് ഉപയോഗിച്ച് 80 നിരയുള്ള [[പഞ്ച്ഡ് കാർഡ്|പഞ്ച്ഡ് കാർഡുകളിലായിരുന്നു]] (ഓരോ നിർദ്ദേശങ്ങളും ഓരോരോ കാർഡിൽ എന്ന കണക്കിൽ) ഫോർട്രാൻ പ്രോഗ്രാമുകൾ രേഖപ്പെടുത്തിയിരുന്നത്. ഇത്തരത്തിലുള്ള കാർഡുകളുടെ അടുക്ക് കമ്പൈൽ ചെയ്യാനായി [[പഞ്ച്ഡ് കാർഡ് റീഡർ|കാർഡ് റീഡറിൽ]] കയറ്റുകയുമായിരുന്നു പതിവ്.

പ്രോഗ്രാമിന്റെ ഭാഗങ്ങൾ ഇന്നയിന്ന നിരയിൽത്തന്നെ എഴുതണമെന്ന് നിഷ്കർഷിക്കപ്പെട്ടിട്ടുള്ള ഒരു ദൃഢമായ വിന്യാസരീതിയാണ് ഫോർട്രാൻ തുടക്കത്തിൽ ഉപയോഗിച്ചിരുന്നത്. ഉദാഹരണത്തിന് ആദ്യത്തെ നിരയിൽ "C" എന്ന അക്ഷരം വന്നാൽ അതൊരു അഭിപ്രായം (comment) ആണെന്നു കണക്കാക്കുകയും ആ കാർഡിനെത്തന്നെ കമ്പൈലർ അവഗണിക്കുകയും ചെയ്യും. അല്ലാത്ത പക്ഷം കാർഡിലെ 1 മുതൽ 5 വരെയുള്ള നിരകൾ ലേബൽ മേഖലയയാണ്. GOTO നിർദ്ദേശത്തിനു പുറമേ WRITE, READ നിർദ്ദേശങ്ങളും FORMAT അനുബന്ധത്തിനായി ഫോർട്രാനിൽ ലേബലുകൾ ഉപയോഗിക്കുന്നു. ആറാമത്തെ നിര തുടർച്ചയെ സൂചിപ്പിക്കുന്നതാണ്; ഈ നിര ശൂന്യമല്ലെങ്കിൽ ആ കാർഡിലെ നിർദ്ദേശം തൊട്ടുമുമ്പത്തെ കാർഡിലെ നിർദ്ദേശത്തിന്റെ തുടർച്ചയാണെന്നു കണക്കാക്കുന്നു. 7 മുതൽ 72 വരെയുള്ള നിരകളാണ് നിർദ്ദേശങ്ങൾക്കുപയോഗിക്കുന്നത്. 73 മുതൽ 80 വരെയുള്ള നിരകളും കമ്പൈലർ അവഗണിക്കും; അതുകൊണ്ട് തിരിച്ചറിയാനുള്ള വിവരങ്ങൾ ഇവിടെ രേഖപ്പെടുത്താനുപയോഗിക്കാറുണ്ട്. ഈ ഭാഗത്ത് ക്രമസംഖ്യ പഞ്ച് ചെയ്ത് രേഖപ്പെടുത്തിയാൽ വീണുപോയോ മറ്റോ ക്രമം തെറ്റിയ അടുക്കുകളെ ക്രമീകരിക്കാൻ ഉപയോഗിക്കാം. ക്രമസംഖ്യയിടുന്ന രീതി പ്രൊഡക്ഷൻ പ്രോഗ്രാമുകളിൽ മാനകമായിത്തന്നെ അവലംബിച്ചുവന്നിരുന്നു. [[ഐ.ബി.എം. 519]] എന്ന യന്ത്രം ഒരു അടുക്ക് കാർഡുകളെ മറ്റൊന്നിലേക്കു പകർത്തുന്നതിനും കാർഡുകളിൽ ക്രമസംഖ്യ രേഖപ്പെടുത്തുന്നതിനും ഉപയോഗിച്ചുവന്നിരുന്ന ഒന്നാണ്. മേൽപ്പറഞ്ഞ നിബന്ധനകൾക്കു പുറമേ ചില വിന്യാസനിബന്ധനകളും ചില കമ്പൈലറുകൾക്കുണ്ടായിരുന്നു, [[ഐ.ബി.എം. 650]] കമ്പ്യൂട്ടറിനോടൊപ്പമുള്ള കമ്പൈലർ ഇത്തരത്തിലൊന്നാണ്.

പഞ്ച്ഡ്കാർഡുകളുടെ കാലം കഴിഞ്ഞ് ഡിസ്ക്ഫയലുകളും മറ്റും പ്രോഗ്രാം ശേഖരിക്കാൻ ഉപയോഗിക്കപ്പെട്ടതിനു ശേഷവും ഫോർട്രാൻ കമ്പൈലറുകളിൽ വിന്യാസനിബന്ധനകൾ നിലനിന്നിരുന്നു. ഫോർട്രാൻ 90 മാനകരൂപത്തിലാണ് വിന്യാസനിയന്ത്രണം ഒഴിവായത്. എന്നിരുന്നാലും പഴയ പ്രോഗ്രാമുകളെ പിന്തുണക്കുന്നതിന് ആധുനിക കമ്പൈലറുകൾ പോലും ദൃഢവിന്യാസരീതിയിലെഴുതിയ സോഴ്സ്കോഡ് പിന്തുണക്കുകയും ചെയ്യുന്നുണ്ട്. 

നിർദ്ദേശങ്ങൾക്കായുള്ള മേഖലയിൽ ഇടവിട്ടാലും പൊതുവേ അത് കമ്പൈലർ അവഗണിക്കുമായിരുന്നു; അതായത് വരിയുടെ നീളം ചുരുക്കുന്നതിന് പ്രോഗ്രാമർക്കു വേണമെങ്കിൽ ഇടവിടാതിരിക്കുകയോ, വ്യക്തതക്കുവേണ്ടി ഇടവിടുകയോ ചെയ്യാം. ഉദാഹരണമായി <code>AVG OF X</code> എന്നത് ഫോർട്രാൻ പ്രോഗ്രാമിൽ സാധുവായ ഒരു നാമമാണ് (idenfifier) അത് <code>AVGOFX</code> എന്നതിന് തത്തുല്യവുമാണ്.

====റിക്കർഷൻ====
ആദ്യകാല ഫോർട്രാൻ കമ്പൈലറുകൾ [[സബ്റൂട്ടീൻ|സബ്റൂട്ടീനുകൾക്കകത്ത്]] [[recursion (computer science)|റിക്കർഷൻ]] (ഒരു സബ്റൂട്ടീനിൽ നിന്ന് അതിനെത്തന്നെ വിളിക്കുന്ന രീതി) പിന്തുണച്ചിരുന്നില്ല. ആദ്യകാല കമ്പ്യുട്ടർ രൂപകൽപ്പനകളിൽ റിക്കർഷനെ സാധ്യമാക്കുന്നതിനുള്ള [[സ്റ്റാക്ക്]] എന്ന പരികൽപ്പനയേയുണ്ടായിരുന്നില്ല എന്നത് ഇതിനൊരു കാരണമാണ്. ഫോർട്രാനിൽ സബ്റൂട്ടീൻ വിളികൾ പിന്തുണക്കാനാരംഭിച്ചപ്പോൾ തിരിച്ചെത്താനുള്ള വിലാസം സബ്റൂട്ടിന്റെ കോഡ് ശേഖരിച്ചിട്ടുള്ളയിടത്തുതന്നെയുള്ള ഒരു നിശ്ചിതസ്ഥാനത്താണ് രേഖപ്പെടുത്തിവക്കുക. അതുകൊണ്ട് ഒരു തവണ സബ്റൂട്ടീൻ വിളിക്കപ്പെട്ടാൽ അത് പൂർത്തിയാക്കി തിരിച്ചെത്താതെ അതേ സബ്റൂട്ടീൻ തന്നെ വിളിക്കുക സാധ്യമല്ല. [[ഫോർട്രാൻ 77]]-ന്റെ മാനകങ്ങളിൽ ഉൾപ്പെടുത്തപ്പെട്ടിരുന്നില്ലെങ്കിലും നിരവധി ഫോർട്രാൻ 77 കമ്പൈലറുകൾ, റിക്കർഷൻ പിന്തുണ നൽകിയിരുന്നു. [[ഫോർട്രാൻ 90]]-ലാണ് റിക്കർഷൻ സൗകര്യം മാനകമായി മാറിയത്.

===ഫോർട്രാൻ II===
1958-ലാണ് ഐ.ബി.എം., **ഫോർട്രാൻ II** അവതരിപ്പിച്ചത്. [[procedural programming|പ്രൊസീജറൽ പ്രോഗ്രാമിങ്ങിനുള്ള]] പിന്തുണയായിരുന്നു ഇതിലെ എറ്റവും പ്രധാനപ്പെട്ട പുതുമ. ഫലം തിരിച്ചുതരുന്ന [[സബ്റൂട്ടീൻ|സബ്റൂട്ടീനുകൾ]], [[ഫങ്ഷൻ (പ്രോഗ്രാമിങ്)|ഫങ്ഷനുകൾ]], [[പരാമീറ്റർ (പ്രോഗ്രാമിങ്)|പരാമീറ്ററുകളുപോഗിച്ച്]] അവയിലേക്ക് [[Call by reference|റെഫറൻസ് രീതിയിൽ]] വിലകൾ കൈമാറുക തുടങ്ങിയ സൗകര്യങ്ങൾ ഫോർട്രാൻ രണ്ടിലുണ്ടായിരുന്നു. പുതിയതായി ഉൾപ്പെടുത്തിയ <code>COMMON</code> എന്ന നിർദ്ദേശം ഉപയോഗിച്ച് സബ്റൂട്ടീനുകൾക്ക് [[global variable|ആഗോളചരങ്ങൾ]] ഉപയോഗിക്കാമായിരുന്നു. താഴെക്കാണുന്ന ആറ് പുതിയ നിർദ്ദേശങ്ങൾ ഫോർട്രാൻ രണ്ടിൽ ഉൾക്കൊള്ളിച്ചിരുന്നു:
* <code>SUBROUTINE</code>, <code>FUNCTION</code>, <code>END</code>
* <code>CALL</code>, <code>RETURN</code>
* <code>COMMON</code>
കുറച്ചുവർഷങ്ങൾക്കുള്ളിൽത്തന്നെ [[ഡബിൾ പ്രിസിഷൻ ഡാറ്റാടൈപ്പ്|ഡബിൾ പ്രിസിഷൻ]] (<code>DOUBLE PRECISION</code>), [[കോംപ്ലക്സ് ഡാറ്റാടൈപ്പ്|കോംപ്ലക്സ്]] (<code>COMPLEX</code>) ഡാറ്റാടൈപ്പുകൾക്കുള്ള പിന്തുണയും ഫോർട്രാൻ രണ്ടിൽ ഉൾപ്പെടുത്തി.
====ഫോർട്രാൻ II-ലെഴുതിയ ലളിതമായ പ്രോഗ്രാം ====
[[Heron's formula|ഹെറോണിന്റെ ഫോർമുല]] ഉപയോഗിച്ച് [[ത്രികോണത്തിന്റെ വിസ്തീർണ്ണം]] കാണുന്നതിനുള്ള ഈ പ്രോഗ്രാം, [[പഞ്ച്ഡ് കാർഡ്|ഡാറ്റാ കാർഡിലെ]] A,B,C എന്ന മുന്ന് അഞ്ചക്കസംഖ്യകൾ വായിക്കുന്നു. ഇവ മൂന്നും ഒരു ജ്യാമിതീയതലത്തിലുള്ള ഒരു ത്രികോണത്തിന്റെ വശങ്ങളെ പ്രതിനിധാനം ചെയ്യുന്നില്ലെങ്കിൽ **1** എന്ന പിഴസന്ദേശത്തോടെ പ്രോഗ്രാം പ്രവർത്തനം നിർത്തുന്നു. (പ്രോഗ്രാമിലെ **STOP 1** എന്ന നിർദ്ദേശം കാണുക). അല്ലാത്തപക്ഷം A,B,C എന്നിവയുടെ വിലകളും ത്രികോണത്തിന്റെ വിസ്തീർണ്ണവും (രണ്ടു ദശാംശസ്ഥാനങ്ങളുള്ള സംഖ്യയായി) അച്ചടിക്കുന്നു.

<source lang="fortran">
C AREA OF A TRIANGLE WITH A STANDARD SQUARE ROOT FUNCTION
C INPUT - CARD READER UNIT 5, INTEGER INPUT
C OUTPUT - LINE PRINTER UNIT 6, REAL OUTPUT
C INPUT ERROR DISPLAY ERROR OUTPUT CODE 1 IN JOB CONTROL LISTING
      READ INPUT TAPE 5, 501, IA, IB, IC
  501 FORMAT (3I5)
C IA, IB, AND IC MAY NOT BE NEGATIVE
C FURTHERMORE, THE SUM OF TWO SIDES OF A TRIANGLE
C IS GREATER THAN THE THIRD SIDE, SO WE CHECK FOR THAT, TOO
      IF (IA) 777, 777, 701
  701 IF (IB) 777, 777, 702
  702 IF (IC) 777, 777, 703
  703 IF (IA+IB-IC) 777,777,704
  704 IF (IA+IC-IB) 777,777,705
  705 IF (IB+IC-IA) 777,777,799
  777 STOP 1
C USING HERON'S FORMULA WE CALCULATE THE
C AREA OF THE TRIANGLE
  799 S = FLOATF (IA + IB + IC) / 2.0
      AREA = SQRT( S * (S - FLOATF(IA)) * (S - FLOATF(IB)) *
     +     (S - FLOATF(IC)))
      WRITE OUTPUT TAPE 6, 601, IA, IB, IC, AREA
  601 FORMAT (4H A= ,I5,5H  B= ,I5,5H  C= ,I5,8H  AREA= ,F10.2,
     +        13H SQUARE UNITS)
      STOP
      END
</source>

===ഫോർട്രാൻ III===
1958-ൽ **ഫോർട്രാൻ III** എന്ന പതിപ്പും [[ഐ.ബി.എം.]] വികസിപ്പിച്ചിരുന്നു. മറ്റു പല സവിശേഷതകൾക്കു പുറമേ, ഫോർട്രാൻ നിർദ്ദേശങ്ങൾക്കൊപ്പം [[അസെംബ്ലർ]] നിർദ്ദേശങ്ങളും ഇതിൽ ഉപയോഗിക്കാമായിരുന്നു. എങ്കിലും ഈ പതിപ്പ് ഒരു ഉൽപ്പന്നമായി പുറത്തിറക്കിയില്ല. മെഷീൻ-ആശ്രിത സവിശേഷതകൾ മൂലം ഒരു മെഷീനു വേണ്ടി എഴുതുന്ന പ്രോഗ്രാം മറ്റൊന്നിൽ പ്രവർത്തിക്കാത്തതാണ് ഇതിനു കാരണം. ഫോർട്രാന്റെ ആദ്യകാല പതിപ്പുകൾക്കെല്ലാം ഈയൊരു പോരായ്മയുണ്ടായിരുന്നു.

=== ഐ.ബി.എം. 1401 ഫോർട്രാൻ ===
[[ഐ.ബി.എം. 1401]]-നു വേണ്ടി ലഭ്യമാക്കിയ ഫോർട്രാൻ പതിപ്പ് നൂതനമായ [[പാസ് (കമ്പൈലർ)|63-പാസ്]] കമ്പൈലറായിരുന്നു ഉപയോഗിച്ചിരുന്നത്. വെറും 8 കെ.ബി. [[മാഗ്നറ്റിക് കോർ മെമ്മറി|മാഗ്നറ്റിക് കോർ മെമ്മറിയിലാണ്]] ഇത് പ്രവർത്തിച്ചിരുന്നത്. ഇതിൽ മെമ്മറിയിലേക്കെടുക്കുന്ന ഫോർട്രാൻ പ്രോഗ്രാമിനെ [[Overlay (programming)|ഓവർലേ]] രീതിയിൽ പലതവണയായി അവിടെവച്ചുതന്നെ ക്രമേണ പരിവർത്തനം നടത്തി എക്സിക്യൂട്ടബിൾ രൂപത്തിലാക്കുകയായിരുന്നു. എക്സിക്യൂട്ടബിൾ രൂപം യന്ത്രഭാഷയിലായിരുന്നില്ല മറിച്ച് അത് [[ഇന്റർപ്രെട്ടർ|ഇന്റർപ്രെട്ട്]] ചെയ്തായിരുന്നു പ്രവർത്തിച്ചിരുന്നത്.

===ഫോർട്രാൻ IV===
ഉപയോക്താക്കളുടെ ആവശ്യങ്ങൾ കണക്കിലെടുത്ത് 1961 മുതൽ ഐ.ബി.എം., ഫോർട്രാൻ നാലിന്റെ വികസനം ആരംഭിച്ചു. ഫോർട്രാൻ രണ്ടിലെ യന്ത്രബന്ധിതമായ പ്രത്യേകതകളെല്ലാം (ഉദാഹരണമായി <code>READ INPUT TAPE</code> പോലുള്ള നിർദ്ദേശങ്ങൾ) ഇതിൽ ഒഴിവാക്കുകയും പുതിയ സവിശേഷതകളായി [[ബൂളിയൻ ഡാറ്റാടൈപ്പ്]] (<code>LOGICAL</code>), ലോജിക്കൽ [[ബൂളിയൻ എക്സ്പെഷനുകൾ]], [[ലോജിക്കൽ IF]] നിർദ്ദേശം തുടങ്ങിയവ ഉൾപ്പെടുത്തുകയും ചെയ്തു. 1962-ൽ  [[IBM 7030 Stretch|ഐ.ബി.എം. 7030 സ്ട്രെച്ച്]] കമ്പ്യൂട്ടറിനോടൊപ്പമാണ് ഫോർട്രാൻ IV പുറത്തിറക്കിയത്. [[IBM 7090|ഐ.ബി.എം. 7090]], [[IBM 7090|7094]] കമ്പ്യൂട്ടറുകൾക്കുള്ള ഫോർട്രാൻ IV പതിപ്പുകളും ഇതിനെപ്പിന്തുടർന്നുവന്നു.

1965-ഓടെ [[അമേരിക്കൻ നാഷണൽ സ്റ്റാൻഡേഡ്സ് ഇൻസ്റ്റിറ്റ്യൂട്ട്|അമേരിക്കൻ നാഷണൽ സ്റ്റാൻഡേഡ്സ് ഇൻസ്റ്റിറ്റ്യൂട്ടിന്റെ]] (ആൻസി) X3.4.3 ഫോർട്രാൻ വർക്കിങ് ഗ്രൂപ്പ്, ഫോർട്രാനുവേണ്ടി മാനകരൂപം ക്രോഡീകരിക്കുകയും അങ്ങനെ ഫോർട്രാൻ IV-ന് ഒരു മാനകരൂപം കൈവരുകയും ചെയ്തു.

ഇക്കാലത്തുതന്നെ ഫോർട്രാൻ IV ഒരു പ്രധാനപ്പെട്ട വിദ്യാഭ്യാസോപാധിയായി മാറുകയും, [[വാട്ടർലൂ സർവകലാശാല|വാട്ടർലൂ സർവകലാശാലയുടെ]] [[വാട്ട്ഫോർ]], [[വാട്ട്ഫൈവ്]] പോലെയുള്ള കമ്പൈലറുകളിലൂടെ ആദ്യകാല കമ്പൈലറുകളിലെ സങ്കീർണ്ണമായ കമ്പൈലിങ്, [[ലിങ്കിങ്]] പ്രക്രിയകൾ ഒട്ടേറെ ലഘൂകരിക്കപ്പെടുകയും ചെയ്തു.
===ഫോർട്രാൻ 66===
ഫോർട്രാന്റെ ആദ്യകാലചരിത്രത്തിലെ പ്രധാന നാഴികക്കല്ലാണ് അതിനൊരു മാനകരൂപമുണ്ടാക്കാനുള്ള അമേരിക്കൻ സ്റ്റാൻഡേഡ്സ് അസോസിയേഷന്റെ (ഇപ്പോൾ [[American National Standards Institute|ആൻസി]]) തീരുമാനം. ഇതിൻഫലമായി രണ്ടു മാനകഭാഷകൾ ഉടലെടുക്കുകയും ഇവ 1966 മാർച്ചിൽ അംഗീകരിക്കപ്പെടുകയും ചെയ്തു. പ്രഥമദൃഷ്ട്യാലുള്ള മാനകമായി കണക്കാക്കുന്ന ഫോർട്രാൻ IV ആധാരമായുള്ള **ഫോർട്രാൻ** മാനകമാണ് ഇവയിൽ പ്രധാനം. ഫോർട്രാൻ II ആധാരമാക്കിയുള്ളതും അതിലെ യന്ത്രബന്ധിതസവിശേഷതകൾ ഒഴിവാക്കിയതുമായ **അടിസ്ഥാന ഫോർട്രാൻ** (Basic FORTRAN) ആണ് രണ്ടാമത്തേത്. ആദ്യം പറഞ്ഞ ഫോർട്രാൻ മാനകപ്രകാരമുള്ള നിർവചിക്കപ്പെട്ട ഭാഷ **ഫോർട്രാൻ 66** എന്നറിയപ്പെട്ടു. മാനകരൂപത്തിലുള്ള മിക്കവാറും കാര്യങ്ങളും ഫോർട്രാൻ IV ആധാരമാക്കിയുള്ളതാകയാൽ പലരും ഇതിനെ ഫോർട്രാൻ IV എന്നുതന്നെ വിളിച്ചുപോന്നു. ഫലത്തിൽ ഫോർട്രാന്റെ ആദ്യത്തെ അംഗീകൃതമാനകരൂപമായി ഫോർട്രാൻ 66 മാറി. ഫോർട്രാൻ 66-ൽ താഴെപ്പറയുന്ന സവിശേഷതകളുണ്ട്:

* പ്രധാനപ്രോഗ്രാം, [[സബ്റൂട്ടീൻ]] (<code>SUBROUTINE</code>), [[ഫങ്ഷൻ (പ്രോഗ്രാമിങ്)|ഫങ്ഷൻ]] (<code>FUNCTION</code>), ബ്ലോക്ക് ഡാറ്റ (<code>BLOCK DATA</code>) എന്നീ പ്രോഗ്രാം വിഭാഗങ്ങൾ
* [[ഇന്റിജർ ഡാറ്റാടൈപ്പ്|ഇന്റിജർ]] (<code>INTEGER</code>), [[റിയൽ ഡാറ്റാടൈപ്പ്|റിയൽ]] (<code>REAL</code>), [[ഡബിൾ പ്രിസിഷൻ ഡാറ്റാടൈപ്പ്|ഡബിൾ പ്രിസിഷൻ]] (<code>DOUBLE PRECISION</code>), [[കോംപ്ലക്സ് ഡാറ്റാടൈപ്പ്|കോംപ്ലക്സ്]] (<code>COMPLEX</code>), [[ബൂളിയൻ ഡാറ്റാടൈപ്പ്|ലോജിക്കൽ]] (<code>LOGICAL</code>) എന്നീ [[data type|ഡാറ്റാടൈപ്പുകൾ]]
* <code>COMMON</code>, <code>DIMENSION</code>, <code>EQUIVALENCE</code> നിർദ്ദേശങ്ങൾ
* പ്രാരംഭവിലകൾ നൽകുന്നതിനുള്ള <code>DATA</code> എന്ന നിർദ്ദേശം
* [[Intrinsic function|ആന്തരികവും]] ബാഹ്യതമവുമായ (<code>EXTERNAL</code>) (''ഉദാഹരണം.'' ലൈബ്രറി) ഫങ്ഷനുകൾ
* ആരോപണനിർദ്ദേശം (assignment)
* <code>GOTO</code>, അസൈൻഡ് <code>GOTO</code>, കമ്പ്യൂട്ടെഡ് <code>GOTO</code> നിർദ്ദേശങ്ങൾ
* ലോജിക്കൽ <code>IF</code>, ത്രിപഥ അരിത്മെറ്റിക് <code>IF</code> നിർദ്ദേശങ്ങൾ
* <code>DO</code> [[ലൂപ്പ് (പ്രോഗ്രാമിങ്)|ലൂപ്പുകൾ]]
* <code>READ</code>, <code>WRITE</code>, <code>BACKSPACE</code>, <code>REWIND</code>, <code>ENDFILE</code> എന്നീ [[sequencial I/O|അനുക്രമ ഇൻപുട്ട് ഔട്ട്പുട്ട്]] നിർദ്ദേശങ്ങൾ
* <code>FORMAT</code> നിർദ്ദേശം
* <code>CALL</code>, <code>RETURN</code>, <code>PAUSE</code>, <code>STOP</code> നിർദ്ദേശങ്ങൾ
* <code>DATA</code>, <code>FORMAT</code> നിർദ്ദേശങ്ങളിലും പ്രോസീജ്യറുകളിലേക്കുള്ള പരാമീറ്ററായുമുള്ള [[Hollerith constant|ഹോളറിത്ത് സ്ഥിരാങ്കങ്ങളുടെ]] ഉപയോഗം.
* ആറ് അക്ഷരം നീളമുള്ള നാമങ്ങൾ (identifiers)
* [[comment (programming)|അഭിപ്രായങ്ങൾക്കായുള്ള]] (കമെന്റ്) സൗകര്യം

===ഫോർട്രാൻ 77===
ഫോർട്രാൻ 66 മാനകരൂപം പുറത്തിറങ്ങിയതിനു ശേഷം, വിവിധ കമ്പൈലർ നിർമ്മാതാക്കൾ നിരവധി സവിശേഷതകൾ അവരവരുടെ കമ്പൈലറുകളിൽ കൂട്ടിച്ചേർത്തു. 1969-ൽ ഫോർട്രാൻ 66 മാനദണ്ഡങ്ങൾ പുതുക്കാനുള്ള നടപടികൾ [[ആൻസി]] ആരംഭിച്ചു. പുതുക്കിയ പതിപ്പിന്റെ കരടുരൂപം 1977-ലാണ് വിതരണം ചെയ്യപ്പെട്ടത് 1978 ഏപ്രിലിൽ ഇതിന് ഔദ്യോഗിക അംഗീകാരവും ലഭിച്ചു. പുതിയ മാനകരൂപം, **ഫോർട്രാൻ 77** എന്നറിയപ്പെട്ടു. ഫോർട്രാൻ 66-ലെ കുറവുകൾ പരിഹരിച്ചുകൊണ്ടുള്ള നിരവധി സുപ്രധാനസവിശേഷതകൾ ഇതിൽ കൂട്ടിച്ചേർത്തിരുന്നു:
* [[structured programming|ഘടനാപരമായ പ്രോഗ്രാമിങ്ങിന്]] കൂടുതൽ സൗകര്യമൊരുക്കുന്നതിന് <code>IF</code> - <code>END IF</code> നിർദ്ദേശഖണ്ഡങ്ങൾ. ഇതിനോടൊപ്പം <code>ELSE</code>, <code>ELSE IF</code> എന്നീ ഉപവാക്യങ്ങൾ വേണമെങ്കിൽ ഉപയോഗിക്കുകയുമാകാം.
* മെച്ചപ്പെടുത്തിയ DO ലൂപ്പ്: പരാമീറ്ററുകളായി ക്രിയാവാക്യങ്ങൾ (expressions), വർദ്ധിനിയായി ഋണസംഖ്യ (negative increments), പ്രവർത്തനതവണകളുടെ എണ്ണം പൂജ്യം (zero trip counts) എന്നിവ പിന്തുണക്കുന്നു.
* മെച്ചപ്പെടുത്തിയ ഇൻപുട്ട് ഔട്ട്പുട്ട് സൗകര്യങ്ങൾക്കുള്ള <code>OPEN</code>, <code>CLOSE</code>, <code>INQUIRE</code> നിർദ്ദേശങ്ങൾ
* ക്രമരഹിത ഫയൽ ഇൻപുട്ട് ഔട്ട്പുട്ട് (Direct-access file I/O)
* <code>IMPLICIT</code> നിർദ്ദേശം
* [[ക്യാരക്റ്റർ ഡാറ്റാടൈപ്പ്|അക്ഷര]] (<code>CHARACTER</code>) ഡാറ്റാടൈപ്പിനു പുറമേ അക്ഷരരൂപത്തിലുള്ള വിവരങ്ങളുടെ ഇൻപുട്ട്, ഔട്ട്പുട്ട്, സംസ്കരണം തുടങ്ങിയവക്കുള്ള വിപുലമായ സൗകര്യങ്ങൾ
* [[constant (programming)|സ്ഥിരാങ്കങ്ങൾ]] പ്രസ്താവിക്കുന്നതിനുള്ള <code>PARAMETER</code> നിർദ്ദേശം
* പൂനരുപയോഗിക്കാവുന്ന തദ്ദേശീയചരങ്ങൾക്കു (persistent local variables) വേണ്ടിയുള്ള <code>SAVE</code> നിർദ്ദേശം
* ആന്തരിക ഫങ്ഷനുകൾക്കുള്ള സാമാന്യനാമങ്ങൾ (ഉദാഹരണമായി [[റിയൽ ഡാറ്റാടൈപ്പ്]] സ്വീകരിക്കുന്ന <code>AMOD</code>, [[ഡബിൾ പ്രിസിഷൻ ഡാറ്റാടൈപ്പ്]] സ്വീകരിക്കുന്ന <code>DMOD</code> എന്നീ ഫങ്ഷനുകൾക്ക് പകരമായി <code>MOD</code> എന്ന ഒറ്റ സാമാന്യനാമം. സാമാന്യനാമമുപയോഗിക്കുമ്പോൾ, പരാമീറ്ററായി കൊടുക്കുന്ന ഡാറ്റാടൈപ്പിനനുസരിക്ക് അനുയോജ്യമായ ആന്തരിക ഫങ്ഷൻ വിളിക്കപ്പെടുന്നു. )
* അക്ഷരരൂപത്തിലുള്ള വിവരങ്ങളെ [[ആസ്കി]] ക്രമത്തിൽ താരതമ്യം ചെയ്യുന്നതിനുള്ള (<CODE>LGE, LGT, LLE, LLT</CODE>) എന്നീ വാക്യങ്ങൾ. ഈ സൗകര്യം [[യു.എസ്. പ്രതിരോധവകുപ്പ്|യു.എസ്. പ്രതിരോധവകുപ്പിന്റെ]] ആവശ്യപ്രകാരമാണ് ഉൾക്കൊള്ളിക്കപ്പെട്ടത്.

മുൻ മാനകരൂപത്തിലുണ്ടായിരുന്ന നിരവധി കാര്യങ്ങൾ ഈ പതിപ്പിൽ ഒഴിവാക്കുകയും മാറ്റത്തിനു വിധേയമാകുയും ചെയ്തു. ഒഴിവാക്കപ്പെട്ടവയിൽ ചിലവ താഴെക്കാണിച്ചിരിക്കുന്നു:
* [[Hollerith constant|ഹോളറിത്ത് സ്ഥിരാങ്കങ്ങളും]] [[Herman Hollerith|ഹോളറിത്ത്]] ഡാറ്റയും, ഉദാഹരണം:
::  <TT> GREET = 12HHELLO THERE! </TT>
* FORMAT നിർദ്ദേശത്തിൽ H എന്ന സൂചകം ഉൾപ്പെടുത്തി ഹോളറിത്ത് ഡാറ്റ വായിക്കൽ
* [[അരേ (പ്രോഗ്രാമിങ്)|അരേയുടെ]] പരിമാണപരിധിക്കുപുറത്തുള്ള വിവരങ്ങൾ എടുക്കൽ. ഉദാഹരണം കാണുക:
:: <CODE>DIMENSION A(10,5)</CODE>
:: <CODE>Y=  A(11,1)</CODE>
* [[പ്രോഗ്രാം കണ്ട്രോൾ]] ഒരു DO ലൂപ്പിന്റെ പരിധിയിൽ നിന്നും പുറത്തേക്കും തുടർന്ന് തിരിച്ച് അതിനകത്തേക്കും പോകുന്നത്
====വകഭേദങ്ങൾ: മിനെസോറ്റ ഫോർട്രാൻ ====
[[Control Data Corporation|കണ്ട്രോൾ ഡാറ്റാ കോർപ്പറേഷന്റെ]] കമ്പ്യൂട്ടറുകളിൽ **മിനെസോറ്റ ഫോർട്രാൻ** (എം.എൻ.എഫ്.) എന്നറിയപ്പെടുന്ന ഫോർട്രാൻ 77-ന്റെ ഒരു പതിപ്പുണ്ടായിരുന്നു. വിദ്യാർത്ഥികൾക്കായി പ്രത്യേകം തയ്യാറാക്കിയതായിരുന്നു ഇത്. ഔട്ട്പുട്ട് നിർദ്ദേശഘടനയിലെ മാറ്റങ്ങൾ, <code>COMMON</code>, <code>DATA</code> എന്നീ നിർദ്ദേശങ്ങളുടെ പ്രത്യേകതരത്തിലുള്ള ഉപയോഗം, [[കമ്പൈലിങ് ഓപ്റ്റിമൈസേഷൻ|കമ്പൈലിങ് ഓപ്റ്റിമൈസേഷനുള്ള]] കോഡ് ലെവലുകൽ, വിശദമായ പിഴസന്ദേശങ്ങൾ, വിപുലമായ മുന്നറിയിപ്പ്-[[ഡീബഗ്]] സന്ദേശങ്ങൾ തുടങ്ങിയവയൊക്കെ ഈ പതിപ്പിന്റെ പ്രത്യേകതയായിരുന്നു

=== ആൻസി മാനക ഫോർട്രാനിലേക്കുള്ള പരിവർത്തനം ===
കമ്പ്യൂട്ടിങ്ങിലും പ്രോഗ്രാമിങ് രീതികളിലും വരുന്ന വളരെവേഗത്തിലുള്ള മാറ്റങ്ങൾ മൂലം ഫോർട്രാൻ 77-നു ശേഷം മാനകരൂപം പുതുക്കുന്നതിനായുള്ള നടപടികൾ തുടർച്ചയായി തടസ്സപ്പെട്ടു. അതുകൊണ്ട് പതിനഞ്ചുവർത്തോളം നിലവിലിരുന്ന മാനകഫോർട്രാൻ ആയ ഫോർട്രാൻ 77, ചരിത്രപരമായി ഫോർട്രാന്റെ ഏറ്റവും പ്രധാന വകഭേദമായി മാറി.

ഫോർട്രാൻ 77-ന്റെ ഒരു പ്രധാന പ്രായോഗിക വികസിതവകഭേദമാണ് 1978-ൽ പുറത്തിറങ്ങിയ **എം.ഐ.എൽ.-എസ്.റ്റി.ഡി.-1753.** [[യു.എസ്. പ്രതിരോധവകുപ്പ്|യു.എസ്. പ്രതിരോധവകുപ്പാണ്]] ഈ മാനകനിർദ്ദേശം വികസിപ്പിച്ചത്. ആൻസി ഫോർട്രാൻ 77-ൽ ഉൾപ്പെടുത്തിയിട്ടില്ലാത്തതും നിരവധി ഫോർട്രാൻ 77 കമ്പൈലറുകളിൽ നിലവിലുണ്ടായിരുന്നതുമായ നിരവധി സവിശേഷതകൾ ഇതിൽ ഉൾക്കൊള്ളിച്ചു. ഈ സവിശേഷതകൾ പിൽക്കാലത്ത് ഫോർട്രാൻ 90 മാനകരൂപത്തിന്റെ ഭാഗമാകുകയും ചെയ്തു.

* <code>DO WHILE</code>, <code>END DO</code> നിർദ്ദേശങ്ങൾ
* <code>INCLUDE</code> നിർദ്ദേശം
* <code>IMPLICIT</code> നിർദ്ദേശത്തിന്റെ വകഭേദമായ <code>IMPLICIT NONE</code> നിർദ്ദേശം
* [[Bit manipulation|ബിറ്റ് തല ക്രിയകൾക്കായുള്ള]] ആന്തരിക ഫങ്ഷനുകൾ. ഇവ, [[Industrial Real-Time Fortran|ഇൻഡസ്ട്രിയൽ റിയൽടൈം ഫോർട്രാൻ (ആൻസി/ഐ.എസ്.എ. എസ്.611 (1976))]] മാനകത്തിൽ ഉൾപ്പെടുത്തിയിരുന്ന സമാന ഫങ്ഷനുകളെ ആധാരമാക്കിയായിരുന്നു.

ഫോർട്രാൻ 77 പ്രോഗ്രാമർമാർക്ക് സിസ്റ്റം കോളുകൾ ലളിതമാക്കുന്നതിനുള്ള [[Institute of Electrical and Electronics Engineers|ഐ.ട്രിപ്പിൾ ഇയുടെ]] 1003.9 [[POSIX|പോസിക്സ്]] മാനകരൂപം, 1991-ൽ പുറത്തിറക്കി. പ്രോസസ് നിർവഹണം, സിഗ്നൽ കൈകാര്യം ചെയ്യൽ, ഫയൽ സിസ്റ്റം നിയന്ത്രണം, ഉപകരണനിയന്ത്രണം, പ്രോസീജ്യർ പോയിന്റിങ്, പോർട്ടബിൾ ആയ സ്ട്രിം ഐ./ഒ. തുടങ്ങിയ കാര്യങ്ങൾക്കുള്ള നൂറിലധികം പോസിക്സ് അനുരൂപമായ സിസ്റ്റം കോളുകൾ ഈ മാനകരൂപത്തിൽ നിർവചിച്ചിട്ടുണ്ടായിരുന്നു.

===ഫോർട്രാൻ 90===
വളരെ വൈകിയാണ് അനൗദ്യോഗികമായി **ഫോർട്രാൻ 90** എന്നറിയപ്പെടുന്ന (''മുൻപ് ഇത് **ഫോർട്രാൻ 8X** എന്നാണ് അറിയപ്പെട്ടിരുന്നത്'') ഫോർട്രാൻ 77-ന്റെ പിൻഗാമി പുറത്തിറങ്ങിയത്. ഇതിന്റെ [[ഐ.എസ്.ഒ.]] മാനകരൂപം 1991-ലും [[ആൻസി]] മാനകം 1992-ലും പുറത്തിറങ്ങി. 1978-ലെ മാനകരൂപം പുറത്തിറങ്ങിയതിനു ശേഷം പ്രോഗ്രാമിങ് രീതികളിൽ വന്നുചേർന്ന പ്രധാനമാറ്റങ്ങളെല്ലാം ഉൾക്കൊണ്ടുകൊണ്ടുള്ള പതിപ്പായിരുന്നു ഇത്.

* പ്രോഗ്രാം എഴുത്തിലെ [[#ദൃഢവിന്യാസം|വിന്യാസനിയന്ത്രണങ്ങൾ]] ഒഴിവാക്കി ഫോർട്രാൻ ഒരു [[free-form language|സ്വതന്ത്രരൂപഭാഷയായി]] മാറി. കീവേഡുകൾക്ക് ചെറിയക്ഷരം ഉപയോഗിക്കാനും ആരംഭിച്ചു.
* നാമപദങ്ങളുടെ (identifiers) നീളം 31 അക്ഷരങ്ങളായി ഉയർത്തി.
* നിർദ്ദേശങ്ങളുക്കുള്ള വരികളിൽത്തന്നെ [[comment (programming)|അഭിപ്രായമെഴുതാനുള്ള]] സൗകര്യം (inline comments)
* [[array (programming)|അരേകളെയും]] അരേയുടെ ഭാഗങ്ങളെയും മൊത്തത്തിൽ കൈകാര്യം ചെയ്യാനുള്ള സൗകര്യം, ഇത് ഗണിത-സാങ്കേതിക ക്രിയകൾ ഏറെ ലഘൂകരിച്ചു.
**പൂർണ്ണമായും ഭാഗികമായും ഉപാധിയോടെയും അരേയിൽ വിലകൾ ആരോപിക്കുന്നതിനുള്ള നിർദ്ദേശങ്ങളും അത്തരത്തിലുള്ള ക്രിയാവാക്യങ്ങളും (ഉദാഹരണം: <CODE> X(1:N)=R(1:N)*COS(A(1:N)) </CODE> - ഇവിടെ R എന്ന അരേയിലെ 1 മുതൽ N വരെയുള്ള സ്ഥാനങ്ങളിലെ വിലയെ യഥാക്രമം A എന്ന അരേയിലെ 1 മുതൽ N വരെയുള്ള സ്ഥാനങ്ങളിലെ വിലയുടെ [[കോസൈൻ]] ഉപയോഗിച്ച് ഗുണിച്ച് X എന്ന അരേയിലെ സമാനസ്ഥാനങ്ങളിൽ നിശ്ചയിക്കുന്നു.)
** <code>WHERE</code> നിർദ്ദേശം ഉപയോഗിച്ച് ഉപാധിയോടെ തിരഞ്ഞെടുക്കപ്പെട്ട അരേ സ്ഥാനങ്ങളിൽ മാത്രം വില ആരോപിക്കാം. (ഉദാഹരണം: <CODE> WHERE(X /= 0) X = 1.0/X</CODE> - ഇവിടെ X എന്ന അരേയിലെ പൂജ്യമല്ലാത്ത വിലകളുടെ [[വ്യുൽക്രമം]] അതിലേക്കുതന്നെ എഴുതുന്നു.)
** അരേ ഫലം തരുന്ന [[constant (computing)|സ്ഥിരാങ്കങ്ങളും]] ക്രിയാവാക്യങ്ങളും (array-valued constants and expressions) 
** അരേ ഫലം തരുന്ന ഉപയോക്തൃനിർമ്മിതമായ [[function (programming)|ഫങ്ഷനുകളും]] [[constructor (programming)|കൺസ്ട്രക്റ്ററുകളും]]
* പ്രൊസീജ്യറുകളിലെ [[recursion (computer science)|റിക്കർഷൻ]] സൗകര്യം (<code>RECURSIVE</code> നിർദ്ദേശം ഉപയോഗിച്ച്)
* പ്രോഗ്രാമിലെ പരസ്പരബന്ധമുള്ള [[സബ്റൂട്ടീൻ|സബ്റൂട്ടീനുകളെയും]] ഡാറ്റയെയും ഒരുമിച്ചുചേർത്ത [[Modular programming|ഘടകങ്ങളായി]], ഇവ മറ്റു പ്രോഗ്രാം ഭാഗങ്ങൾക്ക് ആവശ്യാനുസരണം ലഭ്യമാക്കുകയോ ലഭ്യത നിയന്ത്രിക്കുകയോ ചെയ്യാം.
* പ്രോസീജ്യറുകളിലേക്ക് [[argument (programming)|ആർഗ്യുമെന്റുകൾ]] കൈമാറുന്നതിനുള്ള മെച്ചപ്പെടുത്തിയ സംവിധാനം, ഇതിലൂടെ ആർഗ്യുമെന്റുകളുടെ [[ഡാറ്റാടൈപ്പ്]], കമ്പൈൽ ചെയ്യുന്ന അവസരത്തിൽത്തന്നെ പരിശോധിക്കാൻ സാധിക്കുന്നു.
* ഉപയോക്താവ് നിർമ്മിക്കുന്ന വിവിധ പ്രോസീജ്യറുകൾക്ക് സാമാന്യനാമം നൽകി, ആർഗ്യുമെന്റുകൾക്കനുസരിച്ച് കൃത്യമായ പ്രോസീജ്യറുകളിലേക്ക് നയിക്കാനുള്ള സൗകര്യം (User-written interfaces for generic procedures)
* [[Operator overloading|ഓപ്പെറേറ്റർ ഓവർലോഡിങ്]]
* ഡിറൈവ്ഡ്/[[abstract data type|അബ്സ്ട്രാക്റ്റ്]] ഡാറ്റാടൈപ്പുകൾ
* ഡാറ്റാടൈപ്പും മറ്റ് ആട്രിബ്യൂട്ട് ചരങ്ങളും നിർവചിക്കുന്നതിനുള്ള പുതിയ വാക്യഘടന
* <code>ALLOCATABLE</code> ആട്രിബ്യൂട്ട്, <code>ALLOCATE</code>, <code>DEALLOCATE</code> എന്നീ നിർദ്ദേശങ്ങൾ എന്നിവ ഉപയോഗിച്ച് [[Dynamic memory allocation|ആവശ്യാനുസരണം മെമ്മറി ഉപയോഗിക്കുക]].
* [[ഡൈനമിക് ഡാറ്റാ സ്ട്രക്ചർ|ഡൈനമിക് ഡാറ്റാ സ്ട്രക്ചറുകളുടെ]] നിർമ്മാണത്തിനും കൈകാര്യം ചെയ്യുന്നതിനും സഹായകമായ [[Pointer (computer programming)|പോയിന്റർ]] സൗകര്യം. <code>POINTER</code>, <code>NULLIFY</code> തുടങ്ങിയ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്നു.
* [[loop (programming)|ലൂപ്പുകൾ]] ഘടനാപരമായി മാറി. ലൂപ്പിന്റെ അന്ത്യം കുറിക്കുന്ന <CODE>END DO</CODE> നിർദ്ദേശം. <code>DO</code> ലൂപ്പിന്റെ സാധാരണഗതിയിലുള്ള പ്രയാണം നിയന്ത്രിക്കുന്നതിനുള്ള <code>EXIT</code>, <code>CYCLE</code> നിർദ്ദേശങ്ങൾ
* പ്രോഗ്രാം പ്രയാണം പലവഴിക്ക് തിരിക്കുന്നതിനുള്ള <code>SELECT</code> . . . <code>CASE</code> നിർദ്ദേശങ്ങൾ
* സംഖ്യാചരങ്ങളുടെ സൂക്ഷ്മത (precision) ഉപയോക്താവിന് നിയന്ത്രിക്കാനും, ഇങ്ങനെയുള്ള പ്രോഗ്രാം വിവിധ ആർക്കിട്ചറുകളിൽ ഉപയോഗിക്കാനും സാധിക്കുന്നു (portable)
* പുതിയതും വിപുലീകരിച്ചതുമായ നിരവധി ആന്തരികപ്രോസീജ്യറുകൾ അഥവാ ആന്തരികഫങ്ഷനുകൾ

====കാലഹരണപ്പെട്ട സവിശേഷതകൾ ====
മുൻകാല ഫോർട്രാൻ മാനകനവീകരണങ്ങളിൽ നിന്ന് വ്യത്യസ്തമായി, നിലനിന്നിരുന്ന പതിപ്പിലെ സവിശേഷതകൾ ഒന്നുംതന്നെ ഫോർട്രാൻ 90-ൽ ഒഴിവാക്കിയില്ല. (''മാനകപ്രമാണത്തിന്റെ ബി.1 അനുബന്ധത്തിൽ "ഈ മാനകരൂപമനുസരിച്ച് നീക്കം ചെയ്യപ്പെട്ട സവിശേഷതകൾ ഒന്നുമില്ല" എന്ന് പ്രസ്താവിച്ചിട്ടുണ്ട്.''). അതായത് ഫോർട്രാൻ 77 മാനകരൂപമനുസരിച്ചുള്ള ഏതൊരു പ്രോഗ്രാമും ഫോർട്രാൻ 90 മാനകവും അനുസരിക്കുന്നു എന്നു ചുരുക്കം.

എന്നാൽ ചുരുക്കം ചില സവിശേഷതകൾ കാലഹരണപ്പെട്ടതാണെന്നും അവ ഭാവിമാനകങ്ങളിൽ ഒഴിവാക്കപ്പെടുമെന്നും കരുതുന്നു.

===="ഹെല്ലോ വേൾഡ്" ഉദാഹരണം====
<source lang="fortran">
program helloworld
     print *, "Hello, world."
end program helloworld
</source>

===ഫോർട്രാൻ 95===
പ്രധാനമായും **ഫോർട്രാൻ 90** മാനകരൂപത്തിൽ നിലനിന്നിരുന്ന ചില തകരാറുകൾ പരിഹരിച്ചുകൊണ്ടുള്ള നിസ്സാരമായ പതിപ്പായിരുന്നു **ഫോർട്രാൻ 95**. ഇതിനുപുറമേ കുറേ കൂട്ടിച്ചേർക്കലുകളും ഈ മാനകത്തിൽ വരുത്തിയിട്ടുണ്ട്. ഇവയിൽ [[High Performance Fortran|ഹൈ പെർഫോമൻസ് ഫോർട്രാനിൽ]] നിന്നുൾക്കൊണ്ട സവിശേഷതകൾ ശ്രദ്ധേയമാണ്.

* മെച്ചപ്പെട്ട രീതിയിൽ [[array (programming)|അരേ]] വിലകൾ [[assignment (programming)|ആരോപിക്കുന്നതിനുള്ള]] <code>FORALL</code>, <code>WHERE</code> എന്നീ പ്രോഗ്രാംഘടകങ്ങളും അതിലെ [[nesting (programming)|നെസ്റ്റിങ്]] സൗകര്യവും.
* ഉപയോക്താവിന് നിർവചിക്കാവുന്ന <code>PURE</code>, <code>ELEMENTAL</code> [[പ്രൊസീജ്യറുകൾ]]. ഇത്തരം പ്രോസീജ്യറുകൾ [[സമാന്തര കംപ്യൂട്ടിങ്ങ്|സമാന്തര പ്രോസസിങ്ങിന്]] സഹായകമാണ്. 
* [[derived datatype|ഡിറൈവ്]] ചെയ്യുന്ന ഡാറ്റാടൈപ്പുകളിലെ ഘടകങ്ങൾക്കും [[pointer (programming)|പോയിന്ററുകൾക്കും]] പ്രാരംഭവില നൽകൽ
* ഡാറ്റാ ഓബ്ജക്റ്റുകൾക്ക് [[initialization (programming)|പ്രാരംഭവിലനൽകുന്നതിന്]] ക്രിയാവാക്യങ്ങൾ (expression) ഉപയോഗിക്കാനുള്ള സൗകര്യം
* <code>ALLOCATABLE</code> ഉപയോഗിച്ച് നിർവചിക്കുന്നതും ആവശ്യാനുസാരണം വലിപ്പം നിർണ്ണയിക്കാവുന്നതുമായ അരേകൾ ഉപയോഗിച്ച മെമ്മറി, അവയുടെ [[scope (programming)|പ്രഭാവപരിധിക്കുശേഷം]] (scope) തനിയേ സ്വതന്ത്രമാക്കപ്പെടുന്നു.

ഫോർട്രാൻ ഭാഷയിലെ നിരവധി [[internal functions (programming)|ആന്തരികഫങ്ഷനുകൾ]] ഈ മാനകത്തിൽ വിപുലീകരിക്കപ്പെട്ടിട്ടുണ്ട്. ഉദാഹരണമായി  അരേയിലെ ഏറ്റവും വലിയ അംഗത്തെ കണ്ടെത്തുന്നതിനുള്ള <code>maxloc</code> എന്ന ആന്തരികഫങ്ഷനെ നിയന്ത്രിക്കുന്നതിനായി <code>dim</code> എന്ന [[argument (programming)|ആർഗ്യുമെന്റ്]] കൂട്ടിച്ചേർത്തു.

ഫോർട്രാൻ 90-ൽ കാലഹരണപ്പെട്ടതായി കണക്കാക്കിയ പല സൗകര്യങ്ങളും ഫോർട്രാൻ 95ൽ ഒഴിവാക്കപ്പെട്ടു. ഉദാഹരണങ്ങൾ:

* <code>DO</code> നിർദ്ദേശത്തോടൊപ്പമുള്ള <code>REAL</code>, <code>DOUBLE PRECISION</code> ചരങ്ങളുടെ ഉപയോഗം
* <code>END IF</code> നിർദ്ദേശത്തിന്റെ വരിയിലേക്ക് അതിന്റെ ഖണ്ഡത്തിനു പുറത്തുനിന്നുള്ള തിരിച്ചുവിടൽ
* <code>PAUSE</code> നിർദ്ദേശം
* <code>ASSIGN</code>, അസൈൻഡ് <code>GOTO</code> നിർദ്ദേശങ്ങൾ, ഫോർമാറ്റ് വിവരണങ്ങളുടെ ആരോപണം
* <code>H</code> എന്ന എഡിറ്റ് സൂചകം.

ഫോർട്രാൻ 95-ന്റെ ഒരു പ്രധാനപ്പെട്ട അനുബന്ധമാണ്, [[International Organization for Standardization|ഐ.എസ്.ഓയുടെ]] സാങ്കേതികറിപ്പോർട്ടായ ''ടി.ആർ.-15581 എൻഹാൻസ്ഡ് ഡാറ്റാടൈപ്പ് ഫെസിലിറ്റീസ്''; അനൗദ്യോഗികമായി ഇത് ''അലോക്കേറ്റബിൾ ടി.ആർ.'' എന്നറിയപ്പെടുന്നു. ഈ നിർദ്ദേശപ്രമാണത്തിൽ <code>ALLOCATABLE</code> ഉപയോഗിച്ചുള്ള [[array (programming)|അരേകളുടെ]] വിപുലമായ ഉപയോഗം ഫോർട്രാൻ 2003 അനുരൂപ കമ്പൈലറുകളുടെ ആവിർഭാവത്തിനു മുമ്പുതന്നെ നിർവചിച്ചിരുന്നു. ഡിറൈവ്ഡ് ഡാറ്റാടൈപ്പുകളുടെ ഘടകമായും പ്രോസീജ്യർ ഡമ്മി ആർഗ്യുമെന്റ് ലിസ്റ്റുകളായും ഫങ്ഷൻ ഫലങ്ങളായും ഉള്ള <code>ALLOCATABLE</code> അരേകളുടെ ഉപയോഗങ്ങൾ ഉദാഹരണങ്ങളാണ്. ഫോർട്രാൻ 95 മാനകപ്രമാണമനുസരിച്ച് പ്രഭാവപരിധി കഴിഞ്ഞാൽ അലോക്കേറ്റബിൾ അരേകൾ സ്വയം സ്വതന്ത്രമാകുമെന്നതിനാൽ [[memory leak|മെമ്മറി പാഴാകൽ]] സാധ്യത ഒഴിവാകുന്നു. ഇക്കാരണത്താൽ ഇവ [[പോയിന്റർ]] ആധാരമാക്കിയുള്ള അരേകളേക്കാൾ മെച്ചപ്പെട്ടതുമാണ്. അരേകളെ വിളിക്കുമ്പോൾ പോയിന്ററുകളിലെപ്പോലെ  [[aliasing (computing)|അലിയാസിങ്]] ഒരു പ്രശ്നമല്ലാത്തതിനാൽ കമ്പൈലറുകൾക്ക് കൂടുതൽ വേഗതയേറിയ കോഡ് നിർമ്മിക്കാൻ സാധിക്കുന്നു എന്നതും ഈ രീതിയുടെ മറ്റൊരു മേന്മയാണ്.

ഫോർട്രാൻ 95-ന്റെ മറ്റൊരു പ്രധാന അനുബന്ധമാണ് ഐ.എസ്.ഒയുടെ ''ടി.ആർ.-15580: ഫ്ലോട്ടിങ്-പോയിന്റ് എക്സെപ്ഷൻ ഹാൻഡ്ലിങ്'' എന്ന സാങ്കേതികറിപ്പോർട്ട്. ഐട്രിപ്പിൾഇ ടി.ആർ. (IEEE TR) എന്ന് ഇത് അനൗദ്യോഗികമായി അറിയപ്പെടുന്നു. [[IEEE 754-2008|ഐട്രിപ്പിൾഇ ഫ്ലോട്ടിങ്-പോയിന്റ് ക്രിയകളും]] ഫ്ലോട്ടിങ്-പോയിന്റ് [[exception handling|എക്സെപ്ഷൻ കൈകാര്യം ചെയ്യലുമാണ്]] ഈ പ്രമാണത്തിൽ നിർവചിച്ചിരിക്കുന്നത്. 
==== ഉപാധിയനുസരിച്ചുള്ള കമ്പൈലിങ്ങും അനിശ്ചിതനീളമുള്ള സ്ട്രിങ്ങുകളും ====
ഐ.എസ്.ഒ./ഐ.ഇ.സി. 1539-1: 1997 നിർവചനപ്രകാരമുള്ള നിർബന്ധമായും നടപ്പിലാക്കേണ്ടുന്ന "ആധാരഭാഷ"ക്കുപുറമേ താഴെക്കാണുന്ന രണ്ട് ഐച്ഛികഘടകങ്ങളും ഫോർട്രാൻ 95-നുണ്ട്:
* അനിശ്ചിതനീളമുള്ള അക്ഷരക്കൂട്ടങ്ങൾ (ഐ.എസ്.ഒ./ഐ.ഇ.സി. 1539-2 : 2000)
* ഉപാധികളനുസരിച്ചുള്ള കമ്പൈലിങ് (ഐ.എസ്.ഒ./ഐ.ഇ.സി. 1539-3 : 1998)

ഇവയെല്ലാം ചേർന്നതാണ് ഫോർട്രാൻ 95-ന്റെ ഐ.എസ്.ഒ./ഐ.ഇ.സി. 1539 എന്ന സമസ്ത അന്താരാഷ്ട്രമാനകം. മാനകകർത്താക്കളുടെ അഭിപ്രായപ്രകാരം, നിരവധി ഉപയോക്താക്കളും കമ്പൈലർ നിർമ്മാതാക്കളുടെയും ആവശ്യപ്രകാരമുള്ള സ്വയംപര്യാപ്തമായ സവിശേഷതകളാണ് ഈ ഐച്ഛികഘടകങ്ങളിലുള്ളത്. പക്ഷേ എല്ലാ മാനക ഫോർട്രാൻ കമ്പൈലറുകളിലും ഉൾപ്പെടുത്താനുള്ള അവശ്യം സാമാന്യസ്വഭാവം ഇവക്കില്ല. എന്നിരുന്നാലും ഏതെങ്കിലും മാനകഫോർട്രാൻ കമ്പൈലർ ഈ സൗകര്യങ്ങൾ ലഭ്യമാക്കുന്നുണ്ടെങ്കിൽ അവ മാനകപ്രമാണത്തിലെ ബന്ധപ്പെട്ട ഭാഗത്ത് വിശദീകരിച്ചിരിക്കുന്ന രീതിയിലായിരിക്കണം.

=== ഫോർട്രാൻ 2003 ===
നിരവധി പുതിയ സവിശേഷതകൾ ഉൾക്കൊള്ളിച്ചുകൊണ്ടുള്ള മുഖ്യമായ ഒരു പതിപ്പുതന്നെയായിരുന്നു ഫോർട്രാൻ 2003. പ്രധാനപ്പെട്ട സവിശേഷതകൾ താഴെക്കൊടുത്തിരിക്കുന്നു:
* [[ഡിറൈവ്ഡ് ഡാറ്റാടൈപ്പ്|ഡിറൈവ്ഡ് ഡാറ്റാടൈപ്പുകളിലെ]] പരിഷ്കാരങ്ങൾ: അന്തർലീനമായ ഡാറ്റാടൈപ്പുകൾക്കെന്നപോലെ ഡിറൈവ് ചെയ്ത ഡാറ്റാടൈപ്പുകൾക്കും പരാമീറ്ററുകൾ (kind, length തുടങ്ങിയവ) നൽകാനുള്ള സൗകര്യം, മെച്ചപ്പെട്ട ലഭ്യതാനിയന്ത്രണം, സ്ട്രക്ചറുകളുടെ കൺസ്ട്രക്റ്ററുകളിലും ഫൈനലൈസറുകളിലുമുള്ള മെച്ചപ്പെടുത്തലുകൾ.
* [[Object-oriented programming|ഓബ്ജക്റ്റ് ഓറിയെന്റഡ് പ്രോഗ്രാമിങ്]] പിന്തുണ: [[inheritance (computer science)|ഡാറ്റാടൈപ്പുകളെ വിപുലീകരിക്കാനും ഇൻഹെറിറ്റ് ചെയ്യാനുമുള്ള]] സൗകര്യം, [[Type polymorphism|പോളിമോർഫിസം]], ഡൈനാമിക് ടൈപ്പ് അലോക്കേഷൻ, ടൈപ്പ്-ബന്ധിത പ്രൊസീജ്യറുകൾ
* ഡാറ്റാ കൈകാര്യം ചെയ്യുന്നതിലെ പരിഷ്കാരങ്ങൾ: മുന്പ് അനുബന്ധമായിരുന്ന അലോക്കേറ്റബിൾ ഘടകങ്ങൾ (ടി.ആർ. 15581) മാനകത്തിൽ ഉൾപ്പെടുത്തി, ഡെഫേഡ് ടൈപ്പ് പരാമീറ്ററുകൾ, ചരങ്ങൾക്ക് [[volatile variable|<code>VOLATILE</code> ആട്രിബ്യൂട്ട്]], അരേ കൺസ്ട്രക്റ്ററുകളിലും അലോക്കേറ്റ് നിർദ്ദേശങ്ങളിലും പ്രത്യേകം ടൈപ്പ് നൽകാനുള്ള സൗകര്യം, പോയിന്ററുകളിലെ മെച്ചപ്പെടുത്തലുകൾ, ആന്തരിക പ്രൊസീജ്യറുകളുടെ നവീകരണം.
* ഇൻപുട്ട്/ഔട്ട്പുട്ട് പരിഷ്കാരങ്ങൾ: [[asynchrony|അസിങ്ക്രണസ്]] ട്രാൻസ്ഫർ (അതായത് ഇൻപുട്ട്/ഔട്ട്പുട്ട് നടന്നുകൊണ്ടിരിക്കേ പ്രോഗ്രാമിലെ മറ്റു നിർദ്ദേശങ്ങൾ പ്രവർത്തിച്ചുകൊണ്ടിരിക്കാം), സ്ട്രീം ആക്സസ്, ഡിറൈവ്ഡ് ടൈപ്പുകളുടെ കൈമാറ്റത്തിനായി ഉപയോക്തൃനിർമ്മിതമായ പ്രൊസീജ്യറുകളുണ്ടാക്കാം, ഇൻപുട്ട്/ഔട്ട്പുട്ട് സമയത്തെ റൗണ്ട് ചെയ്യുന്ന രീതി നിയന്ത്രിക്കാനുള്ള സൗകര്യം, നേരത്തെ ബന്ധം സ്ഥാപിച്ചിട്ടുള്ള ഉപകരണങ്ങളെ സൂചിപ്പിക്കുന്നതിനുള്ള സ്ഥിരനാമങ്ങൾ (ഉദാഹരണം: INPUT_UNIT, ERROR_UNIT), <code>FLUSH</code> നിർദ്ദേശം, കീവേഡുകളുടെ ചിട്ടപ്പെടുത്തൽ
* [[function pointer|പ്രൊസീജ്യർ പോയിന്ററുകൾ]].
* [[IEEE 754-2008|ഐട്രിപ്പിൾഇ ഫ്ലോട്ടിങ് പോയിന്റ് ക്രിയകൾക്കുള്ള]] പിന്തുണയും [[floating point|ഫ്ലോട്ടിങ് പോയിന്റ്]] [[exception handling|എക്സെപ്ഷൻ കൈകാര്യശേഷിയും]] (മുൻപ് അനുബന്ധമായിരുന്ന ടി.ആർ. 15580 മാനകത്തിൽ ഉൾപ്പെടുത്തി).
* [[C (programming language)|സി പ്രോഗ്രാമിങ് ഭാഷയുമായി]] ഒരുമിച്ച് പ്രവർത്തിക്കാനുള്ള സൗകര്യം
* അന്താരാഷ്ട്ര ഉപയോഗത്തിനുള്ള പിന്തുണ: [[Universal Character Set|ഐ.എസ്.ഒ. 10646]] 4-ബൈറ്റ് ക്യാരക്റ്ററുകളുടെ പിന്തുണ, സംഖ്യകളുടെ ഫോർമാറ്റെഡ് ഇൻപുട്ട്/ഔട്ട്പുട്ട് സമയത്ത് ദശാംശസ്ഥാനത്ത് ബിന്ദുവോ കോമയോ ഉപയോഗിക്കാനുള്ള സൗകര്യം.
* ആതിഥേയ ഓപ്പറേറ്റിങ് സിസ്റ്റവുമായി കൂടുതൽ യോജിച്ചുള്ള പ്രവർത്തനം: ഓപ്പറേറ്റിങ് സിസ്റ്റത്തിൽനിന്നും പ്രോഗ്രാം പ്രവർത്തിപ്പിക്കുമ്പോൾ നൽകുന്ന [[commandline arguments|കമാൻഡ്‌ലൈനോടൊപ്പമുള്ള ആർഗ്യുമെന്റ്സ്]], ഓപ്പറേറ്റിങ് സിസ്റ്റത്തിന്റെ [[എൻവയോൺമെന്റ് ചരങ്ങൾ]], പ്രോസസർ പിഴസന്ദേശങ്ങൾ തുടങ്ങിയവ പ്രോഗ്രാമിനകത്ത് ലഭ്യമായി.

ഫോർട്രാൻ 2003-ന്റെ ഒരു പ്രധാന അനുബന്ധമാണ്, ഐ.എസ്.ഒയുടെ ''ടി.ആർ.-19767: എൻഹാൻസ്ഡ് മൊഡ്യൂൾ ഫെസിലിറ്റീസ് ഇൻ ഫോർട്രാൻ'' എന്ന ടെക്നിക്കൽ റിപ്പോർട്ട്. ഫോർട്രാൻ പ്രോഗ്രാം ഘടകങ്ങളെ, [[Modula-2|മൊഡ്യുള-2]] മൊഡ്യൂളുകളോട് സാമ്യമുള്ള ''ഉപഘടക''ങ്ങളാക്കി മാറ്റുന്നതിനുള്ള നിർദ്ദേശമാണ് ഇതിലുൾക്കൊള്ളുന്നത്. ഈ ഉപഘടകങ്ങൾ [[Ada (programming language)|അഡ]] പ്രോഗ്രാമിങ് ഭാഷയിലെ പ്രൈവറ്റ് ചൈൽഡ് സബ്‌യൂണിറ്റുകൾക്ക് സമാനമാണ്. ഇതുവഴി മൊഡ്യൂളുകളുടെ വിവരണവും സാക്ഷാത്കാരവും പ്രത്യേകം പ്രത്യേകം പ്രോഗ്രാംഖണ്ഡങ്ങളാക്കി മാറ്റാൻ സാധിക്കുകയും അതുവഴി വലിയ ലൈബ്രറികളുടെ പാക്കേജിങ് എളുപ്പമാകുകയും ചെയ്യുന്നു. മാത്രമല്ല മൊഡ്യൂളുകളുടെ വിവരണവും ഇന്റർഫേസുമടങ്ങിയ ഉപമോഡ്യൂൾ മാത്രം പ്രസിദ്ധപ്പെടുത്താനും അവയുടെ സാക്ഷാത്കാരം അടങ്ങുന്ന ഉപഘടകം ഒളിപ്പിച്ചുവെച്ച് വാണിജ്യരഹസ്യങ്ങൾ സൂക്ഷിക്കാൻ സഹായകമാകുന്നു. പ്രോഗ്രാം എഴുതി കമ്പൈൽ ചെയ്യുന്ന സമയത്ത് മാറ്റം വന്ന മൊഡ്യൂളുകൾ മാത്രം കമ്പൈൽ ചെയ്താൽ മതിയെന്നുള്ളതുകൊണ്ട് കമ്പൈലിങ് പ്രക്രിയയും വേഗത്തിൽ പൂർത്തിയാകുന്നു.

=== ഫോർട്രാൻ 2008===
ഫോർട്രാന്റെ ഏറ്റവും പുതിയ മാനകരൂപമാണ് ഫോർട്രാൻ 2008 എന്ന് അനൗദ്യോഗികമായി അറിയപ്പെടുന്ന **ഐ.എസ്.ഒ./ഐ.ഇ.സി. 1539-1:2010**. ഇത് അംഗീകരിക്കപ്പെട്ടത് 2010 സെപ്റ്റംബറിലാണ്. ഫോർട്രാൻ 2003-ലെ ചില സവിശേഷതകൾക്ക് വ്യക്തത നൽകിയും നിസ്സാരം ചില പുതിയ സൗകര്യങ്ങൾ ഉൾപ്പെടുത്തിയും കൊണ്ടുള്ള ഈ പതിപ്പ് ഫോർട്രാൻ 2003-മായി താരതമ്യപ്പെടുത്തിയാൽ ചെറിയൊരു നവീകരണം മാത്രമാണ്. പുതിയ സവിശേഷതകളിൽച്ചിലത് താഴെപ്പറയുന്നു:
* ഉപഘടകങ്ങൾ - മുന്പ് അനുബന്ധമായിരുന്ന ''ടി.ആർ.-19767:2005'' എന്ന ടെക്നിക്കൽ റിപ്പോർട്ടിലെ നിർദ്ദേശങ്ങളുടെ മെച്ചപ്പെടുത്തിയ രൂപം മാനകത്തിൽ ഉൾപ്പെടുത്തി.
* [[Co-array Fortran|കോ-അരേ ഫോർട്രാൻ]] എന്ന [[സമാന്തര കംപ്യൂട്ടിങ്ങ്|സമാന്തരപ്രോസസിങ്]] ചേർപ്പ്
* പരസ്പരം ആശ്രിതമല്ലാത്ത [[ലൂപ്പ്]] പ്രവർത്തനം സമാന്തരമായി നടത്തുന്നതിനുള്ള [[Scalable parallelism|DO CONCURRENT]] എന്ന സൂചകം.
* അരേകളും മറ്റും തുടർച്ചയായ മെമ്മറി സ്ഥാനങ്ങളിൽ ശേഖരിക്കണമെന്ന് നിർദ്ദേശിക്കാനുള്ള CONTIGUOUS എന്ന സൂചകം. 
* [[Dynamic scoping|BLOCK]] ഘടന – പ്രോഗ്രാമിനകത്ത് എവിടെയും പുതിയൊരു ഖണ്ഡം ആരംഭിക്കാനും അതിനകത്ത് പ്രസ്താവിക്കുന്ന [[variable (programming)|ചരങ്ങളും]] മറ്റും ആ ഖണ്ഡത്തിനുപുറത്തുള്ളവയുമായി ബന്ധമില്ലാതെ തികച്ചും തദ്ദേശീയമായി നിൽക്കുകയും ചെയ്യുന്നു. 
* [[Recursive data type|റിക്കഴ്സീവ് അലോക്കേറ്റബിൾ ഘടകങ്ങൾ]] – ഡിറൈവ്ഡ് ടൈപ്പുകളിലെ റിക്കഴ്സീവ് പോയിന്ററുകൾക്ക് പകരമായി

ഫോർട്രാനും [[സി (പ്രോഗ്രാമിങ് ഭാഷ)|സിയുമായി]] കൂടുതൽ യോജിച്ചപ്രവർത്തനത്തിനുവേണ്ടിയുള്ള ഐ.എസ്.ഒയുടെ സാങ്കേതികനിർദ്ദേശമായ ''ടി.എസ്. 29113'' ഈ മാനകത്തിന്റെ ഒരു പ്രധാന അനുബന്ധമാണ്. ഇതിന്റെ കരട് 2012 മേയ് മാസത്തിൽ അംഗീകാരത്തിനായി സമർപ്പിച്ചിട്ടുണ്ട്. 

== ഫോർട്രാനും സൂപ്പർകമ്പ്യൂട്ടറുകളും ==
അരനൂറ്റാണ്ടിലധികമായി ഉപയോഗത്തിലിക്കുന്നതിനാൽ ഫോർട്രാനിൽ തയ്യാറാക്കിയ അനേകം പ്രോഗ്രാമുകൾ ശാസ്ത്ര-സാങ്കേതികരംഗത്ത് ഇപ്പോഴും സ്ഥിരമായി ഉപയോഗിക്കപ്പെട്ടുവരുന്നു. [[കാലാവസ്ഥാപ്രവചനം]]-[[climate modelling|മോഡലിങ്]], [[computational fluid dynamics|കമ്പ്യൂട്ടേഷണൽ ഫ്ലൂയിഡ് ഡൈനമിക്സ്]], [[computational chemistry|കമ്പ്യൂട്ടേഷണൽ കെമിസ്ട്രി]], [[computational economics|കമ്പ്യൂട്ടേഷണൽ എക്കണോമിക്സ്]], സങ്കരയിനം [[animal breeding|മൃഗങ്ങളുടെയും]] [[plant breeding|സസ്യങ്ങളുടെയും]] തയ്യാറാക്കൽ, [[computational physics|കമ്പ്യൂട്ടേഷണൽ ഫിസിക്സ്]] തുടങ്ങിയ അതിതീക്ഷ്ണമായ [[സൂപ്പർകമ്പ്യൂട്ടർ|സൂപ്പർകമ്പ്യൂട്ടിങ്]] ആവശ്യങ്ങൾക്ക് ഉപയോഗിക്കുന്ന പ്രഥമ പ്രോഗ്രാമിങ് ഭാഷയാണ് ഫോർട്രാൻ. ആദ്യകാലംമുതലേ പുതിയ കമ്പ്യൂട്ടർ പ്രോസസറുകളുടെ പ്രവർത്തനമികവ് കണക്കാക്കുന്നതിനുള്ള [[ഫ്ലോട്ടിങ്-പോയിന്റ് ബെഞ്ച്മാർക്ക്]] പ്രോഗ്രാമുകൾ ഫോർട്രാനിലാണ് എഴുതാറുള്ളത്. അരനൂറ്റാണ്ടിനുശേഷം ഇന്നും ഇത് തുടരുന്നു. (ഉദാരഹണമായി [[Standard Performance Evaluation Corporation|എസ്.ഇ.പി.സിയുടെ]] [http://www.spec.org/cpu2006/ സി.പി.യു.2006] ബെഞ്ച്മാർക്കിലെ [http://www.spec.org/cpu2006/CFP2006/ സി.എഫ്.പി.2006] എന്ന ഫ്ലോട്ടിങ്-പോയിന്റ് ഘടകം കാണുക)

==വഹനീയത (പോർട്ടബിലിറ്റി)==
ഫോർട്രാന്റെ ആദ്യകാലങ്ങളിൽ [[Portability (computer science)|പോർട്ടബിലിറ്റി]] അഥവാ വഹനീയത ഒരു പ്രധാനപ്രശ്നമായിരുന്നു. പരസ്പരം അംഗീകരിക്കപ്പെട്ട ഒരു [[standard|മാനകരൂപത്തിന്റെ]] അഭാവത്തിൽ ([[ഐ.ബി.എം.|ഐ.ബി.എമ്മിനു]] പോലും അന്നൊരു റെഫറൻസ് മാനുവൽ ഉണ്ടായിരുന്നില്ല) വിവിധ കമ്പ്യൂട്ടർ കമ്പനികൾ അവരവരുടെ കമ്പൈലറുകളിൽ പരസ്പരാനുരൂപമല്ലാത്ത പുതിയപുതിയ സവിശേഷതകൾ കൂട്ടിച്ചേർത്ത് മൽസരിക്കുകയും ചെയ്തു. 

മാനകങ്ങളുടെ ആവിർഭാവത്തോടെ വഹനീയത ഗണ്യമായി മെച്ചപ്പെട്ടു. 1966-ലെ മാനകരൂപത്തിൽ [[syntax|വാക്യഘടനയിലും]] [[semantics|സെമാന്റിക്സിലും]] ഐക്യരൂപം നിർദ്ദേശിക്കപ്പെട്ടെങ്കിലും നിർമ്മാതാക്കൾ പരസ്പരാനുരൂപമല്ലാത്ത സവിശേഷതകൾ ചേർത്ത് കമ്പൈലറുകൾ പുറത്തിറക്കുന്നത് തുടർന്നുപോന്നു. മാനദണ്ഡപ്രകാരമല്ലാത്ത സവിശേഷതകൾ പ്രോഗ്രാമുകളിൽ ഉപയോഗപ്പെടുത്തുന്നതുവഴി വഹനീയതാപ്രശ്നങ്ങൾ അഭിമുഖീകരിക്കേണ്ടിവരുമെന്ന് ശ്രദ്ധാലുക്കളായ പ്രോഗ്രാമർമാർ മനസ്സിലാക്കുകയും, പ്രോഗ്രാമുകളുടെ വഹനീയത പരിശോധിക്കുന്നതിനുള്ള [[പിഫോർട്ട് വെരിഫയർ]] പോലുള്ള പ്രോഗ്രാമുകൾ അവർ ഉപയോഗിക്കാനാരംഭിക്കുകയും ചെയ്തു. 1977-ൽ അമേരിക്കയിലെ നാഷണൽ ബ്യൂറോ ഓഫ് സ്റ്റാൻഡേഡ്സ് (ഇന്നത്തെ [[നാഷണൽ ഇൻസ്റ്റിറ്റ്യൂട്ട് ഓഫ് സ്റ്റാൻഡേഡ്സ് ആൻഡ് ടെക്നോളജി]]) ''ഫിപ്സ് പബ് 69'' എന്നൊരു മാനകം പുറത്തിറക്കുകയും യു.സ്. സർക്കാർ ഉപയോഗിക്കുന്ന ഫോർട്രാൻ കോഡും [[കമ്പൈലർ|കമ്പൈലറുകളും]] അവയുടെ ചേർപ്പുകളടക്കം ഈ മാനദണ്ഡം പാലിക്കണമെന്ന് നിഷ്കർഷിക്കുകയും ചെയ്തത് ഈ രംഗത്തെ മികച്ച കാൽവെപ്പായിരുന്നു. ഇതോടെ മിക്ക കമ്പൈലറുകൾക്കും അവയുടെ എക്സ്റ്റൻഷനുകൾ, മാനകങ്ങൾക്കനുസരിച്ചാണോ എന്നു പരിശോധിക്കാനുള്ള സൗകര്യം ലഭ്യമായി.

മാനദണ്ഡങ്ങൾക്കനുരൂപമല്ലാത്ത ചേർപ്പുകൾ മാത്രമായിരുന്നില്ല, മെഷീൻ ആശ്രിതമായ ഗണിതക്രിയകളും ഒരു പ്രധാന വഹനീയതാപ്രശ്നമായിരുന്നു. ഫോർട്രാൻ 66 മാനകമനുസരിച്ചുള്ള [[പി.എ. ഫോക്സ്|പി.എ. ഫോക്സിന്റെയും]] കുട്ടരുടേയും **പോർട്ട്** ലൈബ്രറി ഇതിനൊരു പരിഹാരമായിരുന്നു. ഇതിലവതരിപ്പിക്കപ്പെട്ട ആശയങ്ങൾ പിന്നീട് വ്യാപകമായി ഉപയോഗിക്കപ്പെടുകയും, 1990 ലെ ഫോർട്രാൻ മാനകത്തിൽ ആന്തരിക ഇൻക്വയറി ഫങ്ഷനുകളായി ഉൾപ്പെടുത്തപ്പെടുകയും ചെയ്തു. ബൈനറി ഫ്ലോട്ടിങ്-പോയിന്റ് ക്രിയകൾക്കായി ഇന്ന് സർവവ്യാപിയായി ഉപയോഗിക്കപ്പെടുന്ന [[IEEE 754-2008|ഐട്രിപ്പിൾഇ 754]] മാനകരൂപത്തിന്റെ സ്വാംശീകരണത്തോടെ ഈ പ്രശ്നം ഗണ്യമായി പരിഹരിക്കപ്പെട്ടു.

പ്രോഗ്രാമിന്റെ [[കമാൻഡ്‌ലൈൻ]] (അതായത് പ്രോഗ്രാം പ്രവർത്തിപ്പിക്കാൻ നൽകുന്ന നിർദ്ദേശത്തോടൊപ്പം നൽകുന്ന ആർഗ്യുമെന്റുകളും മറ്റും), [[എൻവയോൺമെന്റ് ചരങ്ങൾ]], എറർ നിലകളെക്കുറിച്ചുള്ള വിശദീകരണങ്ങൾ തുടങ്ങിയ കമ്പ്യൂട്ടിങ്/ഓപ്പറേറ്റിങ് സിസ്റ്റം പരിതഃസ്ഥിതികൾ പ്രോഗ്രാമിനകത്ത് ലഭ്യമാകുക എന്നതും 2003-ലെ മാനകരൂപത്തിൽ പരിഗണിക്കപ്പെടും വരെ പ്രശ്നമായിത്തുടർന്നിരുന്നു.

[[സി (പ്രോഗ്രാമിങ് ഭാഷ)|സിയിൽ]] എഴുതപ്പെട്ടിട്ടുള്ളതും ശാസ്ത്രസാങ്കേതിക കണക്കുകൂട്ടലുകളുമായി കാര്യമായ ബന്ധമില്ലാത്തതുമായ വലിയ ലൈബ്രറികൾ (ഉദാഹരണമായി [[ഗ്രാഫിക്സ് ലൈബ്രറി|ഗ്രാഫിക്സ് ലൈബ്രറികൾ]]) ഫോർട്രാൻ പ്രോഗ്രാമുകൾക്ക് ലഭ്യമാക്കുന്നതുമായി വഹനീയതാപ്രശ്നം നിലനിന്നിരുന്നു. ഈ പ്രശ്നം പരിഹരിക്കുന്നതിന് സിയുമായി യോജിച്ചുപ്രവർത്തിക്കുന്നതിനുള്ള ഘടകങ്ങൾ ഫോർട്രാൻ 2003 മാനകത്തിൽ ഉൾപ്പെടുത്തി.

ഇന്നത്തെ അവസ്ഥയിൽ പ്രീപ്രോസസറുകളുടെയും മറ്റും സഹായമില്ലാതെ, തികച്ചും വഹനീയമായ ഫോർട്രാൻ പ്രോഗ്രം നിർമ്മിക്കുക എന്നത് താരതമ്യേന എളുപ്പമുള്ള കാര്യമാണ്.

==വകഭേദങ്ങൾ==
===ഫോർട്രാൻ 5===
1970-കളുടെ അവസാനും 80-കളുടെ തുടക്കത്തിലുമായി, [[ഡേറ്റ ജനറൽ കോർപ്പറേഷൻ]], അവരുടെ [[Data General Nova|നോവ]], [[Data General Eclipse|എക്ലിപ്സ്]], [[Data General Eclipse MV/8000|എം.വി.]] ശ്രേണിയിലുള്ള കമ്പ്യൂട്ടറുകൾക്കുവേണ്ടി വിപണിയിലിറക്കിയ പ്രോഗ്രാമിങ് ഭാഷയായിരുന്നു ഫോർട്രാൻ 5. അക്കാലത്തെ [[മിനി കമ്പ്യൂട്ടർ|മിനി കമ്പ്യൂട്ടറുകൾക്ക്]] യോജിച്ച [[compiler optimization|ഒപ്റ്റിമൈസിങ് കമ്പൈലർ]] ഇതിനുണ്ടായിരുന്നു. ഫോർട്രാൻ 66 മാനകവുമായി ഏറെ സാമ്യമുള്ള ഭാഷയായിരുന്നു ഇത്. [[#ഫോർട്രാൻ IV|ഫോർട്രാൻ നാലാം]] പതിപ്പിന്റെ തുടർച്ചയെന്ന് തെറ്റിദ്ധരിപ്പിക്കുന്ന പേരാണ് ഇതിനുള്ളത്.

===ഫോർട്രാൻ V===
[[സി.ഡി.സി. 6600]] ശ്രേണിയിലുള്ള കമ്പ്യൂട്ടറുകൾക്കായി [[കൺട്രോൾ ഡേറ്റ കോർപ്പറേഷൻ]] 1968-ൽ വിതരണം ചെയ്തതാണ് ഫോർട്രാൻ V. ഫോർട്രാൻ IV അടിസ്ഥാനമാക്കിയുള്ള ഭാഷയായിരുന്നു ഇത്.

ഫോർട്രാൻ V എന്ന പേരിൽ [[Univac 1100 series|1100 ശ്രേണിയിലുള്ള]] കമ്പ്യൂട്ടറുകൾക്കായി [[univac|യൂനിവാക്കും]] ഒരു കമ്പൈലർ പുറത്തിറക്കിയിരുന്നു. ഇതിന്റെതന്നെ ബ്രാൻഡ് ചെയ്ത പേരാണ് **അഥീന ഫോർട്രാൻ**
===ഫോർട്രാൻ 6===
ഫോർട്രാൻ 6 അഥവാ **വിഷ്വൽ ഫോർട്രാൻ 2001** [[മൈക്രോസോഫ്റ്റ്]] വികസിപ്പിച്ച് [[കോംപാക്|കോംപാക്കിന്]] വിപണനാനുമതി നൽകിയ ഒരു ഫോർട്രാൻ വകഭേദമാണ്. കോംപാക് വിഷ്വൽ ഫോർട്രാൻ എന്ന പേരിലിറക്കിയ ഈ ഉൽപ്പന്നത്തിന്റെ 6, 6.1 പതിപ്പുകൾക്ക് [[മൈക്രോസോഫ്റ്റ് വിഷ്വൽ സ്റ്റുഡിയോ|വിഷ്വൽ സ്റ്റുഡിയോ 5]]-ന്റെ [[Integrated development environment|സംയോജിതസമ്പർക്കമുഖമാണ്]] ഉപയോഗിച്ചിരുന്നത്.

===പ്രത്യേകവകഭേദങ്ങൾ===
ശാസ്ത്രീയാവശ്യങ്ങൾക്കുള്ള അതീവശേഷിയുള്ള കമ്പ്യൂട്ടറുകളുടെ നിർമ്മാതാക്കൾ (ഉദാഹരണമായി, [[Burroughs Corporation|ബറോസ്]], [[Control Data Corporation|സി.ഡി.സി.]], [[Cray|ക്രേ]], [[Honeywell|ഹണിവെൽ]], [[IBM|ഐ.ബി.എം.]], [[Texas Instruments|ടെക്സസ് ഇൻസ്ട്രുമെന്റ്സ്]], [[UNIVAC|യൂനിവാക്]]) [[CPU cache|ഇൻസ്ട്രക്ഷൻ കാഷി]], സി.പി.യു. [[pipeline (computing)|പൈപ്പ്‌ലൈനിങ്]], വെക്റ്റർ അരേകൾ തുടങ്ങിയ അവരുടെ പ്രത്യേക ഹാർഡ്വെയർ സവിശേഷതകൾ പൂർണ്ണമായി ഉപയോഗപ്പെടുത്തുന്നതിനായി അവശ്യമായ ചേർപ്പുകൾ ഫോർട്രാനിൽ ഉൾപ്പെടുത്തുന്നു. ഉദാഹരണത്തിന് ഐ.ബി.എമ്മിന്റെ ഒരു ഫോർട്രാൻ കമ്പൈലറിൽ (**എച്ച്. എക്സ്റ്റെൻഡെഡ് ഐ.യു.പി.**), പ്രോസസറിലുള്ള അനേകം ഗണിതക്രിയാവിഭാഗങ്ങളെ ഒരുമിച്ച് പ്രവർത്തനനിരതമാക്കിവെക്കുന്നതിനായി [[machine code|മെഷീൻകോഡ്]] [[instruction (computer science)|നിർദ്ദേശങ്ങളെ]] ക്രമീകരിക്കുന്നതിനുള്ള ഒരു [[compiler optimization|ഒപ്റ്റിമൈസേഷൻ നിലയുണ്ട്]]. [[NASA|നാസയുടെ]] [[NASA Ames Research Center|ഏംസ് ഗവേഷണകേന്ദ്രത്തിൽ]] പ്രവർത്തിക്കുന്ന [[ILLIAC IV|ഇല്ലിയാക് IV]] സൂപ്പർകമ്പ്യൂട്ടറിനുവേണ്ടി പ്രത്യേകം തയ്യാറാക്കിയ ഫോർട്രാൻ വകഭേദമായ **സി.എഫ്.ഡി.** ഇതുപോലെയുള്ള മറ്റൊന്നാണ്. [[സദിശം|സദിശങ്ങളെയും]] [[മാട്രിക്സ്|മാട്രിക്സുകളുടെയും]] സംസ്കരണത്തിന് വേണ്ടി ഐ.ബി.എം. റിസേർച്ച് ലാബ്സ് വികസിപ്പിച്ച ഫോർട്രാൻ ആധാരമാക്കി വിപുലീകരിച്ച ഭാഷയാണ് **വെക്ട്രാൻ**.

[[Object-Oriented Fortran|ഒബ്ജക്റ്റ് ഓറിയെന്റഡ് ഫോർട്രാൻ]], ഫോർട്രാന്റെ ഒരു [[ഓബ്ജ്ക്റ്റ് ഓറിയെന്റഡ് ഭാഷ|ഓബ്ജ്ക്റ്റ് ഓറിയെന്റഡ്]] വകഭേദമാണ്. ഡേറ്റാഘടകങ്ങളെ ഒബ്ജക്റ്റുകളായി യോജിപ്പിക്കാനും ഇത്തരം ഒബ്ജക്റ്റുകളെ സമാന്തരമായി ഇൻസ്റ്റൻഷ്യേറ്റ് ചെയ്യാനും പ്രവർത്തിപ്പിക്കാനും ഇതിൽ സാധിക്കും. ഈ വകഭേദം [[സൺ]], [[ഐറിസ്]], [[ഐ.പി.എസ്.സി.]], [[എൻക്യൂബ്]] എന്നീ കമ്പ്യൂട്ടറുകൾക്കായി ലഭ്യമാണെങ്കിലും നിലവിൽ വികസനപിന്തുണയില്ല.

ഇത്തരം യന്ത്രബന്ധിത വകഭേദങ്ങൾ കാലാന്തരത്തിൽ മറയുകയോ അവയുടെ സവിശേഷതകൾ പ്രധാനമാനകത്തിൽ ഉൾപ്പെടുത്തപ്പെടുകയോ ചെയ്യപ്പെട്ടു. [[ഷെയേഡ് മെമ്മറി പ്രോഗ്രാമിങ്|ഷെയേഡ് മെമ്മറി പ്രോഗ്രാമിങ്ങിനു]] വേണ്ടിയുള്ള [[OpenMP|ഓപ്പൺ എം.പി.]], ഇത്തരത്തിൽ നിലവിലുള്ള വകഭേദങ്ങളിൽ പ്രധാനപ്പെട്ടതാണ്. [[സമാന്തര കംപ്യൂട്ടിങ്ങ്|സമാന്തരപ്രോസസിങ്ങിനെ]] പിന്തുണണണകുന്നതിനുള്ള [[Co-array Fortran|കോ അരേ ഫോർട്രാൻ]] പുതിയൊരു വകഭേദമാണ്.
==== ഫോർ ട്രാൻസിറ്റ്====
[[ഐ.ബി.എം. 704]] കമ്പ്യൂട്ടറിനുവേണ്ടിയുള്ള ഫോർട്രാൻ ഭാഷയുടെ ഒരു ചുരുക്കിയ പതിപ്പായിരുന്നു **ഫോർ ട്രാൻസിറ്റ്** (FOR TRANSIT). [[ഐ.ബി.എം. 650]] കമ്പ്യൂട്ടറിൽ ഉൾപ്പെടുത്തിയിരുന്ന ഇത്, 1950-കളുടെ അവസാനം, [[കാർനെയ്ജ് ഇൻസ്റ്റിറ്റ്യൂട്ട് ഓഫ് ടെക്നോളജി|കാർനെയ്ജ് ഇൻസ്റ്റിറ്റ്യൂട്ട് ഓഫ് ടെക്നോളജിയിൽ]] വികസിപ്പിച്ചെടുത്ത ഒരു പ്രോഗ്രാം ഉപയോഗിച്ച് [[ഇന്റർപ്രെട്ടർ|ഇന്റർപ്രെട്ട്]] ചെയ്താണ് പ്രവർത്തിച്ചിരുന്നത്. സാധാരണ ഫോർട്രാൻ, ഐ.ബി.എം. 650-നെ അപേക്ഷിച്ച് കൂടുതൽ സങ്കീർണ്ണമായ കമ്പ്യൂട്ടറുകൾക്കു വേണ്ടിയുള്ളതാണെന്നും അതിനാൽ ഫോർട്രാനിലുള്ള 32 നിർദ്ദേശങ്ങളിൽ പലതും ഫോർ ട്രാൻസിറ്റിൽ ആവശ്യമില്ലെന്നുമായിരുന്നു ഐ.ബി.എമ്മിന്റെ വിലയിരുത്തൽ. അതുകൊണ്ട് ഫോർ ട്രാൻസിറ്റിലെ ചില നിർദ്ദേശങ്ങൾ ഒഴിവാക്കുകയും ഇതിനുവേണ്ടിയുള്ള പ്രോഗ്രാം എഴുത്തിൽ ചില നിബന്ധനകൾ ഉൾക്കൊള്ളിക്കുകയും ചെയ്തു. എന്നാൽ ഈ നിബന്ധനകളുണ്ടെങ്കിലും ഫോർ ട്രാൻസിറ്റ് പ്രോഗ്രാമുകൾ ഐ.ബി.എം. 704-നുവേണ്ടിയുള്ള ഫോർട്രാന് അനുരൂപവുമായിരുന്നു. 

ഫോർ ട്രാൻസിറ്റിൽ അനുവദനീയമായിരുന്ന നിർദ്ദേശങ്ങൾ താഴെപ്പറയുന്നു.
: ഗണിതക്രിയാ ആരോപണനിർദ്ദേശങ്ങൾ, ഉദാഹരണം a = b
: GO, ഒരു ലേബലിലേക്ക് (ഉദാഹരണം n)
: GO TO (n<sub>1</sub>, n<sub>2</sub>, ..., n<sub>m</sub>), i
: IF (a) n<sub>1</sub>, n<sub>2</sub>, n<sub>3</sub>
: PAUSE
: STOP
: DO n i = m1, m2
: CONTINUE
: END
: READ n, പട്ടിക
: PUNCH n, പട്ടിക
: DIMENSION V, V, V, ...
: EQUIVALENCE (a,b,c), (d,c), ...

ഒരു ഫോർ ട്രാൻസിറ്റ് പ്രോഗ്രാമിൽ പരമാവധി പത്ത് സബ്റൂട്ടിനുകൾ വരെ ഉപയോഗിക്കാനുമാകും. പ്രോഗ്രാം നിർദ്ദേശങ്ങൾ 7 മുതൽ 56 വരെയുള്ള നിരകളിൽ ഒതുക്കണമെന്ന നിബന്ധനയുമുണ്ട്.

ഐ.ബി.എം. 650 കമ്പ്യൂട്ടറുകളിൽ ഇൻപുട്ടിനും ഔട്ട്പുട്ടിനും [[പഞ്ച്ഡ് കാർഡ്|പഞ്ച്ഡ് കാർഡുകളായിരുന്നു]] ഉപയോഗിച്ചിരുന്നത്. 3 ഘട്ടങ്ങളായാണ് ഇതിൽ [[സോഴ്സ്കോഡ്]] [[യന്ത്രഭാഷ|യന്ത്രഭാഷയായി]] പരിവർത്തനം ചെയ്തിരുന്നത്: ആദ്യം ''ഐ.ടി.'' ഭാഷ എന്ന ഒരു ഇടനിലഭാഷയിലേക്കും തുടർന്ന് [[സോപ് അസെംബ്ലി ഭാഷ|സോപ് അസെംബ്ലി ഭാഷയിലേക്കും]] അവസാനം യന്ത്രഭാഷയിലേക്കും.

**ഫോർ ട്രാൻസിറ്റ് I (എസ്), ഫോർ ട്രാൻസിറ്റ് II** എന്നീ പേരുകളിലുള്ള രണ്ട് പതിപ്പുകൾ ഇതിനുണ്ടായിരുന്നു. [[ഇൻഡെക്സിങ് രെജിസ്റ്റർ|ഇൻഡെക്സിങ് രെജിസ്റ്ററുകളും]] ഓട്ടോമാറ്റിക് ഫ്ലോട്ടിങ് പോയിന്റ് ഡെസിമൽ (ബൈ-ക്വൈനറി) ക്രിയാശേഷിയും ഉള്ള കമ്പ്യൂട്ടറുകൾക്കാണ് രണ്ടാംപതിപ്പ് ഉപയോഗിച്ചിരുന്നത്.

===ഫോർട്രാൻ ആധാരമാക്കിയുള്ള ഭാഷകളും പ്രീപ്രോസസറുകളും===
ഫോർട്രാൻ 77 മാനകത്തിന്റെ ആവിർഭാവത്തിനു മുൻപ്, സൗകര്യപ്രദമായ ഭാഷയിൽ പ്രോഗ്രാം എഴുതാവുന്ന അനേകം [[preprocessor|പ്രീപ്രോസസറുകളുടെ]] ഉപയോഗം സാധാരണമായിരുന്നു. ഇത്തരം പ്രോഗ്രാമുകളെ പ്രീപ്രൊസസർ ഉപയോഗിച്ച് സംസ്കരിച്ച് മാനകരൂപത്തിലുള്ള ഏതൊരു ഫോർട്രാൻ കമ്പൈലറിനും പ്രവർത്തിപ്പിക്കാവുന്ന രൂപത്തിലേക്ക് മാറ്റുകയായിരുന്നു പതിവ്. ഈ പ്രീപ്രോസസറുകൾ, [[structured programming|ഘടനാപരമായ പ്രോഗ്രാമിങ്]], ആറക്ഷരത്തിലധികമുള്ള [[variable name (programming)|ചരനാമങ്ങൾ]], കൂടുതൽ [[ഡേറ്റാടൈപ്പ്|ഡേറ്റാടൈപ്പുകൾ]], [[conditional compilation|കണ്ടീഷണൽ കമ്പൈലേഷൻ]] തുടങ്ങിയവക്കുപുറമേ [[Macro (computer science)|മാക്രോ]] സൗകര്യം പോലും പിന്തുണച്ചിരുന്നു. [[FLECS|ഫ്ലെക്സ്]], [[iftran|ഇഫ്‌ട്രാൻ]], [[Mortran|മോർട്രാൻ]], [[SFtran|എസ്.എഫ്.ട്രാൻ]], [[S-Fortran|എസ്.-ഫോർട്രാൻ]], [[Ratfor|റാറ്റ്ഫോർ]], [[Ratfiv|റാറ്റ്ഫൈവ്]] തുടങ്ങിയവ പേരുകേട്ട പ്രീപ്രോസസറുകളാണ്. ഉദാഹരണത്തിന്, [[സി (പ്രോഗ്രാമിങ് ഭാഷ)|സിയോടു]] സമാനമായ ഭാഷയിലെഴുതുന്ന പ്രോഗ്രാമാണ് റാറ്റ്ഫോറും റാറ്റ്ഫൈവും പ്രീപ്രോസസ് ചെയ്ത് ഫോർട്രാൻ 66 മാനകരൂപത്തിലേക്ക് മാറ്റിയെടുക്കുന്നത്.

ഫോർട്രാൻ ഭാഷയിൽ നിരവധി മുന്നേറ്റങ്ങൾ വന്നെങ്കിലും [[കണ്ടീഷണൽ കമ്പൈലിങ്]], [[മാക്രോ സബ്സ്റ്റിറ്റ്യൂഷൻ]] എന്നീ ആവശ്യങ്ങൾക്ക് ആളുകൾ പ്രീപ്രോസസറുകൾ ഉപയോഗിക്കുന്നത് തുടർന്നുവന്നു. പല ഫോർട്രാൻ കമ്പൈലറുകളിലും [[C preprocessor|സി പ്രീപ്രോസസർ]] കൂടി ഉൾക്കൊള്ളിച്ചിട്ടുണ്ട്. കണ്ടീഷണൽ കമ്പൈലിങ്ങിനുള്ള ശേഷി, ഫോർട്രാൻ 95 മാനകത്തോടൊപ്പം ഐച്ഛികസവിശേഷതയായി ഉൾപ്പെടുത്തിയിട്ടുണ്ട്; ഇത് കൊക്കോ (CoCo) എന്നപേരിലാണ് സാധാരണ അറിയപ്പെടുന്നത്. 

[[Vector|സദിശക്രിയകളും]] [[ഡൈനമിക് സ്റ്റോറേജ്|ഡൈനമിക് സ്റ്റോറേജും]] പോലുള്ള [[സിസ്റ്റം സോഫ്റ്റ്‌വെയർ|സിസ്റ്റം പ്രോഗ്രാമിങ്]] പിന്തുണക്കായുള്ള ചേർപ്പുകൾ ഉൾപ്പെടുത്തി [[Lawrence Radiation Laboratory|ലോറെൻസ് റേഡിയേഷൻ ലബോറട്ടറി]] വികസിപ്പിച്ച ഒരു പ്രീപ്രോസസറാണ് [[LRLTRAN|എൽ.ആർ.എൽ.ട്രാൻ]]. ഈ പതിപ്പ് [[LTSS operating system|എൽ.ടി.എസ്.എസ്. ഓപ്പറേറ്റിങ് സിസ്റ്റത്തോടൊപ്പം]] വിതരണം ചെയ്തിരുന്നു. 

വലിയ ഡിസ്ക്രീറ്റ് വ്യൂഹങ്ങളുടെ മോഡലിങ്ങിനും സിമുലേഷനും വേണ്ടിയുള്ള ഒരു ഫോർട്രാൻ പ്രീപ്രോസസറാണ് [[SIMSCRIPT|സിംസ്ക്രിപ്റ്റ്]]

ആവർത്തനസ്വഭാവമുള്ളതും [[structured programming|ഘടനാപരമല്ലാത്തതും]] കാലഹരണപ്പെട്ടതുമായ (ഉദാഹരണം <code>EQUIVALENCE</code> നിർദ്ദേശം) സവിശേഷതകൾ ഒഴിവാക്കുന്നതിനുദ്ദേശിച്ചുള്ള ഫോർട്രാൻ 95-ന്റെ ശുചീകരിച്ച പതിപ്പാണ് **എഫ്**. ഘടനാപരമായ പ്രോഗ്രാമിങ്ങിനു വേണ്ടി പുതിയ നിർദ്ദേശങ്ങൾ ഫോർട്രാൻ 77, 90 മാനകങ്ങളിൽ ഉൾപ്പെടുത്തിയതിനെത്തുടർന്ന് ഉപയോഗശൂന്യമായ പഴയ നിർദ്ദേശങ്ങൾ എഫ്. ഭാഷയിൽനിന്ന് ഒഴിവാക്കിയിരുന്നു. ഫോർട്രാൻ 90-ൽ ഉൾപ്പെടുത്തിയിരുന്ന [[അരേ പ്രോഗ്രാമിങ്]] സവിശേഷതകൾ ഇതിൽ നിലനിർത്തുകയും ചെയ്തു. പ്രത്യേകിച്ചും വിദ്യാഭ്യാസത്തിനും ശാസ്ത്രീയകമ്പ്യൂട്ടിങ്ങിനും അനുയോജ്യമായ കമ്പൈൽഡും ഘടനാപരവുമായ ഒരു അരേ പ്രോഗ്രാമിങ് ഭാഷ എന്നാണ് എഫ്. പ്രോഗ്രാമിങ് ഭാഷയെ അതിന്റെ നിർമ്മാതാക്കൾ നിർവചിക്കുന്നത്.

== പ്രോഗ്രാം ഉദാഹരണങ്ങൾ ==
:''ഈ വിഷയത്തെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്  കാണുക.''

ഫോർട്രാൻ 90 മാനകത്തിൽ പുതുതായി ഉൾപ്പെടുത്തിയ രണ്ട് സവിശേഷതകളായ [[ഡൈനമിക് മെമ്മറി അലോക്കേഷൻ|ഡൈനമിക് മെമ്മറി അലോക്കേഷനും]] [[അരേ]] ആധാരമാക്കിയുള്ള ക്രിയകളുമാണ് താഴെക്കാണുന്ന പ്രോഗ്രാമിൽ അവതരിപ്പിച്ചിരിക്കുന്നത്. അരേകൾ കൈകാര്യം ചെയ്യുന്നതിൽ <code>DO</code> ലൂപ്പുകളുടെയും <code>IF</code>/<code>THEN</code> നിർദ്ദേശങ്ങളുടെയും അഭാവവും അരേകൾക്ക് മൊത്തത്തിൽ ബാധകമാകുന്ന ഗണിതക്രിയകളും പ്രത്യേകം ശ്രദ്ധിക്കുക. ഇക്കാലത്തെ പ്രോഗ്രാമിങ് ശൈലിയനുസരിച്ചുള്ള വിവരണാത്മകമായ ചരനാമങ്ങളും സാമാന്യമായ പ്രോഗ്രാം രൂപവും ശ്രദ്ധേയമാണ്. നൽകുന്ന സംഖ്യകളുടെ ശരാശരി കണക്കാക്കുന്നതിനുള്ള പ്രോഗ്രാമാണിത്.

<source lang="fortran">
  program average

  ! Read in some numbers and take the average
  ! As written, if there are no data points, an average of zero is returned
  ! While this may not be desired behavior, it keeps this example simple

  implicit none

  real, dimension(:), allocatable :: points
  integer                         :: number_of_points
  real                            :: average_points=0., positive_average=0., negative_average=0.

  write (*,*) "Input number of points to average:"
  read  (*,*) number_of_points

  allocate (points(number_of_points))

  write (*,*) "Enter the points to average:"
  read  (*,*) points

  ! Take the average by summing points and dividing by number_of_points
  if (number_of_points > 0) average_points = sum(points) / number_of_points

  ! Now form average over positive and negative points only
  if (count(points > 0.) > 0) then
     positive_average = sum(points, points > 0.) / count(points > 0.)
  end if

  if (count(points < 0.) > 0) then
     negative_average = sum(points, points < 0.) / count(points < 0.)
  end if

  deallocate (points)

  ! Print result to terminal
  write (*,'(a,g12.4)') 'Average = ', average_points
  write (*,'(a,g12.4)') 'Average of positive points = ', positive_average
  write (*,'(a,g12.4)') 'Average of negative points = ', negative_average

  end program average
</source>

==ഫലിതബിന്ദുക്കൾ==
ഫോർട്രാൻ 77 എന്ന പേര് തിരഞ്ഞെടുത്ത സ്റ്റാൻഡേഡ് കമ്മിറ്റി യോഗത്തിൽത്തന്നെ "ലെറ്റർ ഒ [[considered harmful|കൺസിഡേഡ് ഹാംഫുൾ]]" (Letter O considered harmful) എന്ന തലക്കെട്ടിൽ ഒരു സാങ്കേതികനിർദ്ദേശം കൂടി പരിഗണിക്കപ്പെട്ടിരുന്നു. ചരനാമങ്ങൾക്കു പേരുനൽകുന്നതിൽ നിന്ന് O എന്ന അക്ഷരത്തെ ഒഴിവാക്കി, ഈ അക്ഷരവും പൂജ്യവും തമ്മിലുള്ള ആശയക്കുഴപ്പത്തെ പരിഹരിക്കാനുദ്ദേശിച്ചുള്ള നിർദ്ദേശമായിരുന്നു ഇത്. എന്നാൽ പ്രോഗ്രാം എഴുതാനുപയോഗിക്കുന്ന അക്ഷരസഞ്ചയത്തിൽനിന്നുതന്നെ O ഒഴിവാക്കുക എന്ന നിർദ്ദേശമായിരുന്നു ഇത്. <CODE>**GO TO**</CODE> നിർദ്ദേശമൊന്നും ഉപയോഗിക്കാനാവില്ല എന്നതിനാൽ ഇത് ഘടനാപരമായ പ്രോഗ്രാമിങ് രീതിയിലേക്ക് മാറാൻ സഹായിക്കുമെന്നും, പ്രശ്നസങ്കീർണ്ണമായ <CODE>**FORMAT**</CODE> നിർദ്ദേശത്തെയും പ്രോഗ്രാമിൽ നിന്ന് ഒഴിവാക്കാമെന്നും വിലയിരുത്തപ്പെട്ടിരുന്നു. എന്നാൽ നിലവിലുള്ള പ്രോഗ്രാമുകളെ അസാധുവാക്കുമെന്ന കാരണത്താൽ ഈ നിർദ്ദേശം കണക്കിലെടുക്കാതിരിക്കുകയായിരുന്നു.

<CODE>**DO''' നിർദ്ദേശത്തിന്റെ പ്രവർത്തനം, കുറഞ്ഞത് എത്ര തവണയായിരിക്കണം എന്നതിനെച്ചൊല്ലിയും ഫോർട്രാൻ 77-ന്റെ മാനകരൂപീകരണസമിതിയിൽ തർക്കങ്ങളുണ്ടായിരുന്നു. കുറഞ്ഞ തവണ പൂജ്യമായിരിക്കണമെന്നും (അതായത് ആ ഖണ്ഡം ഒരിക്കൽപ്പോലും പ്രവർത്തിക്കാതിരിക്കുക) അതല്ല ഒന്നായിരിക്കണമെന്നും (ഒരുതവണയെങ്കിലും നിർബന്ധമായും പ്രവർത്തിക്കും) വാദങ്ങളുണ്ടായിരുന്നു. ഈ വിഷയത്തിൽ ലോറൻ മെയ്സ്നർ മുന്നോട്ടുവച്ച വാദം വളരെ രസകരമായിരുന്നു. ഒറ്റത്തവണ മാത്രം പ്രവർത്തിക്കാനാണെങ്കിൽ ലൂപ്പ് തന്നെ എന്തിനാണെന്നും കുറഞ്ഞ തവണ രണ്ടായിരിക്കണം എന്നുമായിരുന്നു അദ്ദേഹത്തിന്റെ വാദം.

## കുറിപ്പുകൾ
*

## അവലംബം

വർഗ്ഗം:അമേരിക്കൻ കണ്ടുപിടിത്തങ്ങൾ