تحقيقي پيرامون زبان برنامه نويسي فرترن
) FORmula TRANslation ( FORTRAN

فرترن اولین زبان سطح بالا است که تولید آن در سال ۱۹۵۴ به سرپرستی جان باکوز به منظور ایجاد یک زبان علمی در شرکت IBM شروع و در سال ۱۹۵۷ روی IBM 704 معرفی گردید که بالغ بر ۵/۲ میلیون دلار هزینه برداشت. با استفاده از این زبان حل معادلات ریاضی بسیار آسان گردید و بسیار مورد استقبال قرار گرفت. این زبان در اکثر کامپیوترهای بزرگ و کوچک مورد استفاده قرار می گیرد و همین استقبال فوق العاده سبب شد تا کار تهیه استاندارد در سال ۱

۹۶۲ برای آن شروع شود که یکی از آن ها را نسخه

پایه و دیگری را نسخه کامل یا گسترش یافته می نامند. استاندارد زبان فرترن در سال ۱۹۶۶ مورد پذیرش سازمان استاندارد آمریکا قرار گرفت و این اولین زبانی بود که به صورت استاندارد درآمد. برنامه هایی که به این زبان در یک کامپیوتر نوشته می شود معمولا به س

ادگی در سایر کامپیوترها نیز قابل استفاده می باشد. فرترن نیز از دستورات ورودی، خروجی، محاسباتی، منطقی / مقایسه ای و سایر دستورات اساسی از قبیل READ ، WRIT، GOTO و STOP همانطور که از این دستور ها در زبان انگلیسی انتظار می رود استفاده می شود.
زبان فرترن قابلیت حل مسایل ریاضی و آماری را دار می باشد، لذا بسیاری از برنامه های این مقوله به این زبان نوشته می شوند. از ضعف های این زبان این است

که دنبال کردن منطق برنامه مشکل تر از سایر زبان های سطح بالا می باشد و این زبان برای پردازش فایل ها نمی باشد، لذا برای پردازش فایل ها و استفاده در امور تجاری زبان سطح بالای دیگری بوجود آمد به نام کوبول.
فرترن ۹۰ زبان برنامه نويسي اي طبق استاندارد جهاني است كه امكان دارد براي كاربرد هاي علمي و مهندسي فراگير شده و به طور گسترده براي پردازش اطلاعات عمومي مورد استفاده قرار مي گيرد .
هرچند نام صحيح زبان جديد فرترن۹۰ است اما اغلب به فرترن خلاصه مي شود . شكل قبلي زبان FORTRAN 77 بود كه طبق قرارداد با حروف بزرگ لاتين نوشته مي شد . كلمه FORTRAN در اصل از مخفف دو كلمه formula translation ساخته شد . سالهاي زيا

دي است كه زبانهاي برنامه نويسي مسئله غامضي را پيش روي تعيين كنندگان استراتژي و تعليم دهندگان صنعت انفورماتيك قرار داده اند . فرترن خانواده اي از زبانهاست كه حال ۳۰ سال قدمت دارد و هرچند بسيار رايج است ، اما تنها بصورت استاندارد قديمي فرترن ۷۷ و يا به شكلهاي غيراستاندارد موجود بوده است .
بنابراين در دهه ۱۹۸۰ بسياري از افرادي كه مي خواستند از زبان برنامه نويسي مدرنتر و
بهتري استفاده كنند از فرترن روي گردان شدند . درضمن به هر حال مشخص شد كه زبانهاي مشتري جمع كن ديگر مانند پاسكال و ادا (Ada) كاستيهاي خود

را دارند و آن طور كه انتظار مي رفت متداول نشدند .
در دهه ۱۹۸۰پيشرفت ديگر ، ازدياد نسل چهارم ، زبانهاي سطح بالا ، سيستمهاي بانك اطلاعاتي و ساير بسته هاي نرم افزاري بود كه اغلب به شيوه صفحه گزينش عمل كرده و تسهيلات نيرومندي را براي اجراي كارهاي ويژه اي عرضه مي كنند . اين نرم افزارها به يقين بسيار سودمند هستند اما هر كدام حوزه محدودي مسائل را خطاب مي كنند . به طور معمول در اجرا به نسبت كند بوده و در نهايت استفاده از آنها مي تواند بسيار پيچيده باشد.
براي مثال نمونه مدرني از نرم افزار صفحه گسترده قادر است محاسبات پيچيده اي را انجام دهد و مي تواند داده ها را در شكلهاي زيادي پردازش كند . اما به احتمال زياد سربار سنگيني روي سيستم كامپيوتري مي گذارد و بايد مجموعه فراميني دا

شته باشد كه چندان هم ساده تر از زبان فرترن نيست ، در حاليكه كارهاي بيشماري وجود دارد كه صفحه گسترده ، به دليل ساختار اختصاصي اش نمي تواند انجام دهد .
با سپري شدن زمان ، لازم شد كه استفاده كنندگان همه جانبه كامپيوتر با صفحه گسترده ، بسته هاي آماري ، واسطه هاي گرافيكي و واژه پردازان پيچ

يده ، سيستمهاي نشرروميزي و خيلي چيزهاي ديگر آشنا شوند . اما لزوم استفاده از زباني به شيوه فرترن براي حل مسائل عمومي و به روشي مستقيم و بدون محدوديت باقي مانده است . در سالهاي اخير زبان c به تدريج نسبت به فرترن ۷۷ محبوبيت بيشتري كسب كرده و محاسني از قبيل سادگي ، حكمهاي مختصر و مفيد و قابليت حمل خوبي دارد . اما c مشكلاتي دارد كه آن را براي خيلي از افراد غير جذاب مي سازد .
سادگي آن ، وقتي كه به آن كتابخانه پردازه استاندارد افزوده شده و يا زبان به شكل قدرتمندتر آن يعني ++c توسعه داده شود ، بسيار كاهش مي يابد .
بعد از c به چه مي توانيم رو آوريم ؟
اين سؤال ما را به فرترن ۹۰ رهنمون مي كند . فرترن ۹۰ براي راه تازه پيشرفت طراحي شده است . زبان به طور كامل مدرن ، نيرومند ، همه جانبه براي پردازش بالقوه تمام مفاهيمي كه استفاده كنندگان از پاسكال و c انتظار داشتند مي باشد . فرترن ۹۰ زبان مفصلي ، تمام خصيصه هاي استانداردهاي قبلي فرترن را حفظ كرده است . اما اين قيمتي است كه بايد براي سازگاري با گذشته پرداخت شود . از طرف ديگر براي استفاده كنندگان كه برنامه هاي جديد مي نويسند و آزاد هستند كه گذشته را ناديده بگيرند . فرترن ۹۰ هسته ا

ي برازنده و توانمند دارد كه از نظر ذهني و آموزشي بسيار جذاب است.
فرترن ۹۰ به جهتي بيش از يك زبان برنامه نويسي است . اين زبان دربردارنده مفاهيم و اصطلاحاتي است كه دردنياي حرفه اي مهندسي نرم افزار استاندارد شده است و اصطلاحاتي مانند اشاره گر ، نويسه و آرگومان در تمام زبانها به كار گرفته م

ي شوند .
اين اصطلاحات معني دقيق فني دارند و قسمتي از فرهنگي است كه برنامه نويسها براي مطرح كردن كارشان به آن نيازمندند .
تا چند سال قبل ، كتاب برنامه نويسي به فرترن روي تسهيلات و تكنيك محاسبات ، تاكيد مي كرد . بيشتر كاربردهاي پيشرفته برنامه نويسي شامل رياضيات پيشرفته بود .كارهاي غير رياضي محدوده زبانهاي ساده تري بود ، مانند كوبال براي كاربردهاي تجاري .
امروزه وضع عوض شده است : كاربرد هاي كامپيوتري پيچيده اي خارج از علوم رياضي وجود دارد و فرترن روي داده هاي غيرعددي مي تواند به طورموثر و با سهولت عمل كند فرترن ۹۰ را در محدوده كاربردها يي ازتحليل زبان تا پردازش تصوير با نتايج كمي و نيز كيفي مي توان به كار برد . در يك زمان محاسبات را نه تنها روي يك مجموعه از اعداد بلكه روي آرايه هاي بزرگي مي توان انجام داد و مترجمها مي توانند از پردازنده هاي جديد موجود از

نوع موازي ( يا برداري ) بهره برداري كنند .
فرترن بيش از سي سال به اشكال مختلف مورد استفاده بوده وحال سرمايه گذاري عظيمي در برنامه هاي موجود نهفته است . در نتيجه ، قا بليت حمل در زمان به همان اهميت قابليت حمل در مكان است ، وفرترن ۹۰ سازگار با گذشته ، يعني استاندارد فرترن ۷۷ طراحي شده است . اين به اين معناست كه همانطور كه قبلا گفته شد

فرترن ۹۰ حاوي تعدادي از خصيصه هاي كهن است كه اينها بدون بار مسئوليت گذشته در طراحي زبان پيش بيني نمي شد .
برنامه نویسی فرترن (مقدماتی)
فرترن نخستین زبان علمی می باشد که برای کامپیوتر طراحی شده است . این زبان در مو ضوعات علمی و مهندسی کاربرد فراوان دارد . با وجود گذشت بیش از سی سال از اولین نسخه های این زبان برنامه نویسی به سبب ارتقای قابلیت های آن توسط طراحان آن همواره کاملترین زبان علمی و مهندسی به شمار رفته است . پیشرفت علمی فرترن در دهه های گذشته را می توان از فرترن ۷۷ به فرترن ۹۰ نام برد . اما با وجود پیشرفت هایش هنوز راحتی کاربردش در برنامه های گرافیکی میسر نگردیده . با به میان آمدن نرم افزار Fortran Power Station 4.0 (F.P.S.4) توانایی های فرترن پیشرفت چشمگیری یافت .این نسخه سازگار با سیستم عامل های Windows 95\98.NT و نگارش های بالاتر می باشد . همچنین شامل تابع های پیشرفته ی گرافیکی ، کتابخانه های گسترده ی ریاضی و ابزار برنامه نویسی Visual است.شرکت مایکروسافت این زبان را به عنوان مهمترین گزینه برای مهندسان و دانشمندان پیشنهاد نموده زیرا افزودن بر قابلیت های عنوان شده ، از دقت محاسباتی بالا و سرعت اجرای زیادی برخوردار است ، به طوری که در سایر نرم افزار های علمی مانند MATLAB نیز برای افزایش سرعت اجرای برنامه (حتی تا ۲۵ برابر) برخی از اجزای آن (مانند حلقه ها) را به زبان فرترن می نویسند .

برنامه نویسی با فرترن :متغیر ها : برای نوشتن یک برنامه به زبان فرترن و انجام یک سری عملیات باید از نام های مختلفی تحت عنوان متغیر استفاده کرد (اسامی متشکل از حروف ، ارقام و کاراکتر (-) که با حروف شروع می شوند)
متغیر ها در فرترن به چهار دسته صحیح (Integer) ، حقیقی (Real) حقیقی دقت مضاعف(Double Precision) ، رشته ای (Character) و منطقی (Logical) تقسیم می شوند .
به عنوان یک قاعده ی کلی متغیر ها را باید در اول برنامه تعریف نمود که از چه نوعی می باشند . در فرترن به صورت پیش فرض متغیر هایی

که حرف اول نام آنها یکی از حروف I,J,K,L,M,N باشد به عنوان متغیر صحیح و در غیر این صورت حقیقی (اعشاری) به شمار می رود . با رعایت این اصل دیگر نیازی به تعریف متغیر های صحیح و حقیقی در ابتدای برنامه نیست ، مگر آنکه بخواهیم متغیری را که حرف اول آن یکی از این حروف است عمدا متغیر حقسقس (بر خلاف پیش فرض) در نظر بگیریم .
نکته :
متغیر های رشته ای که شامل یک کلمه یا جمله می شوند حتما باید در ابتدای برنامه از نوع Char تعریف گردند .
طول متغیر های رشته ای (متنی) باید بر حس

ب کاراکتر در جلوی دستور Char بعد از علامت * درج شود
Char*10 name
فرترن اولیه محدودیت شش کاراکتری داشت .
چنانچه جمله ای طولانی تر از۱۰به name اختصاص دهیم فقط تا کاراکتر دهم آن در متغیر ذخیره خواهد شد
چنانچه ظرفیت متغیر های رشته ای با یکدیگر تفاوت داشته باشد
Char name*10,text*,sum*15
انتساب یک مقدار یا عبارت به متغیر ها سا از طریق خواندن (دستور Read) انجام می گیرد و یا با علامت
“=”
Char*10 name
Name = “Ali”
متغیر های منطقی نیز فقط می توانند دو ارزش درست (.True.) یا نا درست (.False.)را به خود اختصاص دهند
Logical var1,var2
Var1=.True
گفتیم متغیر هایی که با حروف I-N شروع می شوند صحیح و بقیه حقیقی اند.
با استفاده از دستور IMPLICIT می توان این قاعده را عوض کرد
Implicit integer (A-Z)
اگر این دستور در ابتدای زیر برنامه ای بیاید تمام متغیر هایی که اعلان شده اند از نوع صحیح منظور می شوند

دستور Parameter

می دانیم که مقدارمنتسب به متغیر ها در طول اجرای برنامه قابل تغییر است . اما اگر بخواهیم از نام هایی استفاده کنیم که در طول اجرای برنامه قابل تغییر نباشد باید آنها را در مقابل دستور Parameter در ابتدای برنامه نوشت
PARAMETER (num=12)
R

eal, PARAMETER (PI=3.141592)
اگر متغیر ها غیر عددی باشند (مانند character) باید قبل از دستور Parameter نوع آنها را تعریف نمود
ساختار برنامه ها در فرترن :
Program نام برنامه
Real…
Integer…
Read(*,*)a,b,c
d=b**2+c*c
Write (*,*)
Stop توقف بر نامه
End پایان برنامه
نکته:
دستورات می توانند در یک سطر و پشت سر هم با درج علامت, بین هم نوشته شوند.
از نظر سبک نوشتن برنامه دو نوع ساختار وجود دارد:
۱) فایل های با پسوند.For
2) فایل های با پسوند .F90
فایل های با پسوند.For
برنامه های قدیمی که به زبان فرترن نوشته می شدند دارای این پسوند بودند.چنانچه ازاین پسوند استفاده شود رعایت موارد زیر الزامی است:
۱) دستورات باید از ستون هفتم به بعد نوشته شوند(نحو فرمت ثابت)در F.P.S.4 برای راهنمایی کاربر ستون ششم پرونده های با پسوند .For به رنگ سبز در می آید و برنامه نویس باید لز ستون هفتم به بعد برنامه ها را بنویسد.
۲) شماره گذاری برای دستورات در صورت لزوم از ستون اول تا پنجم می باشد.
۳) هر سطر دارای ۷۲ ستون است. در نوشتن دستورات طولانی (بیش از ۷۲ کاراکتر) برای ادامه خط باید در ستون ششم سطر بعد و ادامه دستور را از ستون هفتم به بعد نوشت.
۴) برای نوشتن توضیحات (مستند سا

زی برنامه) باید در ابتدای آن سطر (ستون یکم) حرف C را تایپ نمود.
فایل های با پسوند .F90
پرونده های جدید در فرترن بهتر است با این پسوند نوشته شوند. موارد زیر را در این پرونده ها باید مد نظر داشت:

۱) نوشتن دستورات از ستون ۱ تا حداکثر ستون ۲۵۵ هر سطر. در صورت داشتن شماره دستور حداقل یک فضای خالی بین شماره و دستور الزامی است.
۲) در صورت ادامه دستور از یک سطر باید در انتهای این سطر علامت & درج شود و ادامه دستور در سطر بعدی نوشته شود.
۳) برای نوشتن جملات توضیحی باید ! در ابتدا یا هر جایی از متن (با رعایت یک فاصله از آخرین حرف) درج شود.
ورودی و خروجی:
Read(*.*) دستور خواندن از صفحه کلید
Write(*.*) چاپ اطلاعات روی صفحه نمایش
بین متغیرهایی که قرار است چاپ شوند باید علامت “,” گذاشته شود
Write(*.*) a,b
برای آنکه عبارتی عینا چاپ شود باید آن را داخل گیومه قرار داد
Write(*.*) ‘Result=’,a
Result=5.000000 a=5با فرض اینکه
می توان نتایج برنامه را با ترتیب خاصی مانند مشخص بودن میدان قرار گرفتن اعداد، تعداد اعشار آنها و… چاپ نمود. برای این کار از دستور Format استفاده می شود.
دستور Format :

دستور Write(*.*) خروجی را مطابق با نوع و دقت تعین شده برای متغیر ها (اعم از ساده یا مضاعف) و با فاصله ی کافی از یکدیگر چاپ

می کند.
در واقع علامت * دوم داخل دستور Write نشانگر فرمت آزاد (یا بدون یک ترتیب خاص) می باشد.
در صورتی که بخواهیم خروجی با یک ترتیب خاص چاپ شود باید به جای علامت * یک عدد گذلشتو در سطر دیگری ابتدا شماره و سپس دستور Format را برای آن نوشت.
Write(*,شماره فرمت) خروجی
شماره فرمت Format(nx,nIm,nFw.d,nAw,nH,nx,/,\)
در این صورت n (ضریب عملگر ها) تعداد میدان می باشد (مثال ۲I5 ← دو میدان صحیح با طول ۵ کاراکتر)
x ← جای خالی
Im ← خروجی عدد صحیح با طول میدان m
Fw.d ← خروجی عدد اعشاری با طول میدان w و مقدار اعشار d
F12.3=-1234567.891
Ew.d ← خروجی عدد توانی با طول میدان w و مقدار اعشار d
E10.2=-12.34E+02

Aw ← خروجی رشته ای با طول میدان w
nH ← n کاراکتری که پس از حرف H نوشته می شوند عینا در خروجی چاپ می شوند
nX ← مکان نما را n ستون به جلو می برد

/ ← مکان نما را به سطر بعدی می برد
\ ← سبب می شود تا دستور Read بعدی داده های ورودی از ادامه آخرین سطر چاپ شده (نه سطر جدید) خوانده شود
Write(*,'(A,\)’) ‘Enter L1,L2:’
Read(*,*) L1,L2
مثال:
Write(*,12) M,N,a,b
12 Format(2I3,2F12.4)
این دستور باعث می شود تا دو متغیر صحیح اول در یک میدان ۳ کاراکتری و دو متغیر حقیقی بعدی در یک میدان ۱۲ کاراکتری ولی هر یک با ۴ رقم اعشار چاپ شوند.
فرض کنیم
M=3 , N=51 , a=18.25946 , b=0.3569
چاپ به صورت زیر خواهد بود: (متغیر ها در میدان مربوط از راست به چپ چیده می شوند)
□□۳□۵۱□□□□□۱۸٫۲۵۹۴٫□□□□□□□.۳۵۶۹
نکته:
(I به جای نوشتن دستور Format می توان عملگرهای آنرا در خود دستور چاپ و داخل پرانتز نوشت
Write(*,'(عملگرها)’) خروجی ها
(II برای جلوگیری از نوشتن میدان های اندازه میتوان آنها را داخل پرانتز و با ضریب تکرار مربوطه قرار داد.
شماره فرمت Format(I4,5X,2(F12.4,2X,I10)
(III دقیقا مشابه دستور Write به هنگام استفا

ده از دستور Read نیز می توان داده ها را با فرمت خاص خواند. البته توصیه می شود برای جلوگیری از اشتباه در خواندن داده ها و حساسیت آنها از همان فرمت آزاد استفاده شود.
دستور های تکرار عملیات:
:Do

برای تکرار یک یا چند دستور پیاپی از فرمان Do با ساختار زیر استفاده می شود
۱)
کنترل کننده حلقه Do
دستورات
End Do
2)
کنترل کننده حلقه،شماره دستور پایان Do
دستورات
Continue شماره دستور پایان
Sum=0
Do 10 i=1,8
Write(*,*)’Enter number:’
Read(*,*)number
Sum=sum+number

۱۰ continue

Write(*,*)’sum=’,sum
End

Sum=0
Do i=1,8
Write(*,*)’Enter number:’
Read(*,*)number
Sum=sum+number
End Do
Write(*,*)’sum=’,sum

دستور Exit موجب خروج از حلقه می شود و دستور CYCLE موجب انتقال کنترل از دستور جاری به دستور آخر و شروع تکرار بعدی حلقه می شود.
دستورات شرطی:
به کمک دستورهای شرطی می توان اجرای بخشی از برنامه را منوط به برقرار بودن شرطی انجام داد.

if (یک عبارت منطقی) فرمان اجرایی
در زبان فرترن از علائم زیر برای کاربرد شرط استفاده می شود:
> ↔ .GT.
>= ↔ .GE.

< ↔ .LT.
<= ↔ .LE.
== ↔ .EQ.
!= ↔ .NE.
می توان چند شرط را با یکدیگر به کمک عامل های زیر ترکیب کرد
.AND. معادل «و» به معنی برقرار بودن دو شرط
.OR. معادل «یا» به معنی برقرار بودن حداقل یکی از شرط ها
.NOT.
چنانچه با برقرار بودن یک شرط نیاز به اجرای چندین دستور باشد از ساختار زیر استفاده می شود
if (عبارت منطقی) THEN
دستورات اجرائی
End if
می توان دستور IF را به گونه ای نوشت که در صورت نبودن شرط هم دستوراتی اجرا شوند
IF (عبارت منطقی) THEN
دستورات ۱
ELSE
دستورات ۲
END IF

IF(a.GE.1) THEN
S=a**2-b
ELSE
S=0
END IF

دستور پرش (Go To) :
برای فرستادن کنترل خط به یک سطر مشخص از برنامه (که شامل دستورات اجرایی باشد) به کار می رود:
Go to شماره سطر

شماره سطر دستورات اجرائی

If (a.GT.b) Go to 10
Write(*,*)’a<=b’

Go to 20
10 Write(*,*)’a>b’
20 …
آرایه ها:
آرایه ها متغیر هایی هستند که می توانند شامل مقادیر زیادی باشند. آرایه ها می توانند یک بعدی یا چند بعدی باشند (آرایه ها می توانند تا ۷ بعد داشته باشند).
برای تعریف آرایه ها باید نام آنها را در مقابل دستور Dimension قرار داد و سپس باید در طی برنامه به اجزای آرایه مقدار نسبت داد.
آرایه ها در حقیقت متغیر های چند بعدی می باشند که به طور پیش فرض بر حسب حرف اول نام خود حقیقی یا صحیح ارزیابی می شوند، مگر آنکه به طور موکد اعلان شوند.
چنانچه آرایه ای با دستورات Integer, Real و… تعریف شود نباید قبلا با دستور Dimension تعریف شده باشند.
آرایه ها در فرترن به صورت ستونی ذخیره می شوند.
Real I(20), T(2,6)

Dimension J(3,5)

به طور کاملا مشابه با متغیر های ساده می توان آرایه ها را با یکدیگر جمع، تفریق، ضرب و… نمود. فقط باید توجه داشت که آرایه ها از نظر بعد با یکدیگر سازگار باشند.
Integer D(4)
Dimension J(3,2)
D(1)=1
D(2)=3

J(1,1)=5
J(1,2)=8

J(2,3)=11
S=D(3)*J(2,3)
Write(*,*)’S=’,s

End

برش بندی:
برای انجام عملیات بر روی بخشی از یک آرایه می توان از برش بندی استفاده کرد. مثلا برای نوشتن برابری درایه های سوم تا هفتم ماتریس سطری D با درایه های یکم تا چهارم ماتریس F می توان نوشت:
D(3:7)=F(1:4)
A(1:2,3:7)=B(3:4,2:6)
به طور مشابه می توان زیر رشته ای از یک رشته کاراکتری را نیز انتخاب کرد
CHARACTER* 12 name
name(2:6)
دستور DATA :
در برنامه های کوچک به متغیر ها می توان با دستور = و یا از طریق خواندن از صفحه کلید و یا یک فایل مقدار داد ولی اگر تعداد متغیر ها زیاد باشد و یا برای آرایه ها می توان با کمک دستور Data عملیات مقدار دهی را خلاصه نمود. این دستور یک فرمان غیر اجرایی است و باید در ابتدای برنامه نوشته شود.
ساختار این دستور به صورت زیر است
Data var1,var2,…var/،مقدار۳،مقدار۲،مقدار۱…مقدار،
Data a,b,c,d/12,4,8,3/
اگر چند متغیر هم نوع دارای ارزش یکسانی باشند می توان به جای تکرار مقدار آنها (به جز مقادیر منفی) از یک ضریب استفاده نمود.
a=b=c=1.5

d=4
Data a,b,c,d/3*1.5,4/
Data name,family/’Ali’, ‘Alavi’/ اگر متغیر ها از نوع کاراکتر باشند
برای مقدار دهی به آرایه ها نو

شتن نام آنها (بدون ذکر بعد)در مقابل دستور Data کافی است
Real D(4),A(2,3)
Data D/1,3,5,7/
Data (A)i, j) , j=1,3,i=1,2/5,8,9,2,4,11/
زیر برنامه ها:
هنگامی که دستورات یک برنامه طولانی می شودرفع اشکال و درک عملکردهای بخش های مختلف آن دشوار می شود. معمولا مراحل مختلف برنامه های طولانی را در بخش های کوچکتری به نام زیر برنامه می نویسند در این صورت برنامه ی اصلی فقط از چند خط تشکیل می شود که زیر برنامه ها را با دستور Call فراخوانی می کندهمان طور که هر بخش محاسباتی شامل چند داده اولیه و سپس یک یا چند نتیجه است، در استفاده از زیر برنامه ها نیز این متغیر های ورودی و خروجی در داخل پرانتز و مقابل نام زیر برنامه گذاشته می شوند.
یک زیر برنامه در واقع برنامه ای کاملا مستقل است که پش از اتمام برنامه های اصلی قرار می گیرد.
زیر برنامه های تابع فقط یک مقدار را بر می گردانند که در برنامه های اصلی مورد استفاده قرار می گیرد (فرترن ۷۷ اجازه بازگشتی را نمی دهد ولی بازگشت در فرترن ۹۰ امکان پذیر است).
Read (*,*) a,b,c
Call F (a,b,c,Result)
Write (*,*) Result
End

Subroutine F (x1,x2,x3,x4)
c1=(x1+x2)**2
c2=(x1+x3)**2
c3=(x2+x3)**2

x4=c1+c2+c3
return
End

می بینیم که a,b,c,Result به ترتیب به x1 ، x2 ، x3 و x4 نسبت داده می شوند.
همان طور که می بینیم ترتیب اهمیت دارد و تفاوت نام در برنامه اصلی و زیر برنامه ها اهمیت ندارد. از مزایای این ویژگی در اختیار قرار دادن زیر برنامه ها به سایر کاربران بدون هیچ گونه تغییر در برنامه اصلی آنها و فقط با رعایت ساختار داده های ورودی زیر برنامه می باشد.
در ارتباط با استفاده از زیر برنامه ها متغیر های زیر برنامه کاملا مجزا از متغیرهای برنامه اصلی هستند. چنانچه خواسته شود بعضی از متغیر ها هم در برنامه اصلی و هم در زیر برنامه دارای ارزش یکسان باشند باید با دستور Common هم در برنامه اصلی و هم در زیر برنامه آنها را مشترک نمود. این دستور پیش از دستورات اجرایی نوشته می شود.
– باید دقت داشت متغیر ها یا آرایه هایی که با Common بین برنامه اصلی و زیر برنامه، مشترک تعریف می گردند باید در برنامه اصلی و زیر برنامه یکی باشند (یعنی فقط یکسان بودن نام الزامی نیست)
– آرایه ها را می توان به عنوان متغیر های زیر برنامه با دستور Common مشترک کرد. باید آرایه بدون درج حدود در دستور Common قرار گیرد

.
– نمی توان یک متغیر را هم در ورودی زیر برنامه داد و هم با دستور Common مشترک نمود.
Subroutine f(c1,c2,c3)
Real A(3,3)
Common A,x,y
Return

End