Fortran compilers

Window Layout

The Simply Fortran window is divided into two main regions. The left side displays project management, file outline, and debugging tool panels. The right side displays Fortran editor tabs as well as the Build Status and Console tabs. These tabs can be separated into additional views to show multiple files side-by-side. The entire window is displayed below:

The menu and toolbar located at the top of the window are explained in subsequent sections.

The bottom of the window feature a small status bar. The left-most portion of the status bar is used for reporting Simply Fortran’s current work status and, when appropriate, the current version control mode and branch. Normally, this status will report “Ready” when editing text, managing projects, or configuring options. When a project build procedure is executed, this status will change to the appropriate text while the work is being performed. The right-most portion of the status bar contains the current cursor position within the editor.

Tab Popup Menu

Right-clicking on a tab will open the Tab Popup menu, which provides number of functions:

Close This Tab Closes the currently selected tab
Close Other Tabs Closes all other open editor tabs
Close All Tabs Closes all editor tabs
Add This File to Project The file in the current tab is added to the Project Outline
Save Save the contents of this tab
Save As Save the contents of this tab to a specified filename
Reload This File Reloads the file contents from disk, discarding all changes
Move to New Panel Opens the tab in a separate tab panel

The menu allows users to close select tabs, save the current tab, reload tab contents, add files to projects, and split editor panels, as described below.

Closing Tabs

Tabs can be closed using a popup menu available by right-clicking anywhere in the displayed tabs. The popup menu has multiple options:

  1. Close Current
  2. Close Others
  3. Close All

The first option simply attempts to close the currently selected tab. If unsaved information exists in the editor, the user will be prompted. The second option closes all tabs except the currently selected tab. The third option closes all tabs including the top-most tab.

When multiple tabs contain unsaved work, the user will be warned exactly once if multiple tabs are being closed simultaneously.

Add File to the Current Project

The fourth menu option, Add to Project, will add the selected editor tab’s file to the current project tree if not already present.

Splitting the Editor Panel

The Move to New Panel submenu allows the user to move the selected tab to a new tab panel, either to the right or below the current panel containing tabs. By moving the tabs to a new panel, the user can view and edit multiple files side-by-side, often making editing easier.

To move other tabs into the new panel, the user can simply drag any tab into the new tab bar of the new panel. Panels can also be resized by clicking on borders and dragging.

An editor panel will automatically be closed when all tabs have been removed. Tabs can either be closed or dragged to other editor panels.

Creating a New View of the Current Tab

The Create Another View option is used to create another tab that is directly linked to the selected tab. The option is useful for creating a second view of the same file. The new tab will be linked with the original; any changes in one tab will be reflected in the original and vice versa. This paradigm is useful when, for example, a user wishes to view one portion of a source file while editting another portion that wouldn’t necessarily fit on the same screen.


C void setlinestyle (linestyle, upattern, thickness)Fortran subroutine setlinestyle (linestyle, upattern, thickness)


Sets the current line style to either a predefined pattern or a user-specified pattern. Additionally, sets the thickness of lines. The linestyle may be one of the following:


If USERBIT_LINE is specified, the line pattern as specified by upattern is used. The upattern parameter will be a 2-byte array where any bit set to 1 will be drawn.


Parameter C Type Fortran Type Description
linestyle int integer The id of the desired pre-defined line pattern or USERBIT_LINE
upattern unsigned short integer(kind=c_short) The 16-bit pattern to use for line drawing
thickness int integer The thickness of the line

Из командной строки

Допустим, мы хотим запустить «чистый компилятор», не пользуясь IDE. Пишем программу в текстовом файле, например :

Компилируем из командной строки:

Если пути в  «подхватились», после этого получается файл , запуск которого приведет к выводу приветствия на консоль (или «кракозябров» из-за несовпадения кодировки). Если пути в  не прописаны, перед надо указать к нему путь – все точно также будет работать.

Опция задает выходной файл.

Чтобы статически сгенерировать , не завязанный ни на какие внешние -библиотеки, нужно добавить опцию :

О других опциях –

Далее. Допустим, проект состоит из нескольких модулей. Пусть, например, это три файла: , и  с соответствующими текстами:

Пример составлен так, чтобы смоделировать зависимости модулей друг от друга, показанные на схеме:

Компилируется такой проект, чтобы не нарушался порядок зависимостей, следующим образом:

Сначала исходные файлы компилируются в объектные (опция ), а затем они линкуются в результирующий .


C void readimagefile (filename, left, top, right, bottom)Fortran subroutine readimagefile (filename, left, top, right, bottom)


Reads in an image file specified by filename and draws the resulting image at the coordinates specified. If filename is NULL or omitted, an “Open” dialog will appear. Image data falling outside the specified bounds will be clipped, not scaled. If the coordinates specify a region bigger than the image itself, the image will be drawn starting at the left-top position.


Parameter C Type Fortran Type Description
filename char * character(*) The filename to read
left int integer The left coordinate at which to draw the loaded image in the window
top int integer The top coordinate at which to draw the loaded image in the window
right int integer The right coordinate at which to draw the loaded image in the window
bottom int integer The bottom coordinate at which to draw the loaded image in the window


C int createscrollbar(x, y, width, height, direction, callback)Fortran function createscrollbar (x, y, width, height, direction, callback)


Creates a scroll bar within the window. The scroll bar can be either horizontal or vertical
depending on the value of direction, which may be either:

Value Description
SCROLL_HORIZONTAL A horizontal scroll bar
SCROLL_VERTICAL A vertical scroll bar

The resulting scroll bar is not tied to the window to allow scrolling automatically. Rather, the developer must provide a callback procedure that will be called with the scrollbar’s current position whenever the scrollbar moves. This callback may then taken action based on the scroll position provided.


Parameter C Type Fortran Type Description
x int integer Leftmost position of the scroll bar
y int integer Topmost position of the scroll bar
width int integer Width of the scroll bar
height int integer Height of the scroll bar
direction int integer The direction of the scroll bar
callback void callback( int ) subroutine callback(integer) The procedure to call when the scroll position changes

For gfortran developers

  • For those despairing of git: Some help can be found in the GitCookbook.

  • Bug Bashing (status 3rd May 2019; incl. some double counting)
    • Regressions 61 bugs 6 assigned

    • PRs where a valid program is rejected or wrong code is produced 5 bugs, 1 assigned (Fortran 95 with default options)

    • Serious bugs 7 bugs 2 assigned; includes Fortran 95 bugs from above plus selected other bugs with high priority

    • PRs where wrong code is produced 100 bugs 9 assigned

    • PRs where a valid Fortran program is not accepted (internal compiler error, wrongly rejected), wrong code is produced or where the compile time or memory is excessively high 229 19 assigned bugs

    • PRs where invalid code is accepted or gives an internal compiler error 107 bugs 6 assigned

    • PRs which show where the diagnostics can be improved 113 bugs 5 assigned

    • All reports (bug reports, feature requests etc.): 872 reports

  • Graphical bug count timeline (Bugzilla account unfortunately required)

  • Projects for inclusion into gfortran-4.6: please add your own projects there, with an approximate date of merging and state of readiness

  • Action list for gfortran-4.5: summary of gfortran get-together of 2008-11-28

  • Fortran 2003 implementation status of the GNU Fortran Compiler (time line)

  • Beginner’s guide to writing testcases — see also on the main Wiki HowToPrepareATestcase

  • SymbolVersioning for runtime libraries.

  • GFortranScalarizer documents the scalarizer gfortran uses internally to translate array fortran statements into scalar code enclosed in a loop.


We encourage everyone to contribute
changes and help test GNU Fortran. GNU Fortran is developed on
the mainline of GCC and has been part of the compiler collection
since the 4.0.0 release.

Contributions will be reviewed by at least one of the following

  • Paul Brook
  • Steven Bosscher
  • Bud Davis
  • Jerry DeLisle
  • Toon Moene
  • Tobias Schlueter
  • Janne Blomqvist
  • Steve Kargl
  • Thomas Koenig
  • Paul Thomas
  • Janus Weil
  • Daniel Kraft
  • Daniel Franke

Under the rules specified below:

  • All normal
    requirements for patch submission (assignment of copyright to
    the FSF, testing, ChangeLog entries, etc) still apply, and
    reviewers should ensure that these have been met before approving
  • Approval should be necessary for
    patches which don’t fall under the obvious rule. So, with the approver list
    put in place, everybody (except maintainers) should still seek approval for
    his/her patches. We have found the mutual peer review process really
    works well.
  • Patches should only be reviewed by
    people who know the affected parts of the compiler. (i.e. the
    reviewer has to be sure he/she knows stuff well enough to make a
    good judgment.)
  • Large/complicated patches should
    still go by one of our maintainers, or team consensus.
  • We are all reasonable people, and nobody is working under
    employer pressure or needs an ego-boost badly, so in general we
    assume that no-one deliberately does anything stupid 🙂

The directories involved are:

  1. gcc/gcc/fortran/
  2. gcc/gcc/testsuite/gfortran.dg/
  3. gcc/gcc/testsuite/gfortran.fortran-torture/
  4. gcc/libgfortran/

Make Utility

The Make utility is used to control the compilation process and control necessary inter-file dependencies when building Fortran projects. Simply Fortran relies on the Open Watcom Make (wmake) package to control the building process.

When a project is built, Simply Fortran scans all Fortran files to generate a proper Makefile that ensures all module dependencies are met. This Makefile is then passed to wmake to build the project accordingly.

The Make Options dialog allows the user to edit some settings related to the building process.

Make Location

This option specifies the path to the Make utility. After installation of Simply Fortran, the default value should lead to the proper wmake executable.

Project Toolkit Location

The project toolkit executable is necessary for resolving and building dependent projects. If a given project references another project, the build system will use the project toolkit to build the dependent project prior to building the referencing project. The default value should always be acceptable.

Simplified Build Progress

When this option is enabled, the output of compiler commands in the Build Status tab will show a simplified message as the build progresses. If the option is disabled, the full compiler commands will be generated in the Build Status tab. In either case, compiler warnings and errors will always be shown.

Project-Only Fortran Include Dependencies

This checkbox allows the user to specify how the dependencies of Fortran source files utilizing the INCLUDE statement are calculated. When this box is checked, Simply Fortran will only add files listed in INCLUDE statements as dependencies if the files are also present in the Project tree. If the box is unchecked, Simply Fortran will add any and all files appearing in INCLUDE statements as dependencies for a given source file.

Running GNU Fortran as a syntax checking tool

One may use GNU Fortran as a syntax checker (or verify that GNU Fortran’s frontend correctly accepts or rejects a program), by specifying -fsyntax-only on the command line. Gfortran will then not generate object files.

When given the command line option -fdump-parse-tree gfortran will print a representation of the parsed program, detailing both the data objects and the executable statements of the program in a Lisp-inspired notation. One remark for Fortran old timers: ASSIGN in these dumps does not refer to the ASSIGN statement, but to the operation of assignment, i.e. sloppily speaking, the = operator.


Из фильма В центре вниманияИз фильма Ван ХельсингИз сериала Дневники ВампираИз фильма Скауты против зомбииз фильмов ‘Миссия невыполнима’Из фильма Голодные игры: Сойка-пересмешница. Часть 2OST ‘Свет в океане’OST «Большой и добрый великан»из фильма ‘Новогодний корпоратив’из фильма ‘Список Шиндлера’ OST ‘Перевозчик’Из фильма Книга джунглейиз сериала ‘Метод’Из фильма ТелохранительИз сериала Изменыиз фильма Мистериум. Тьма в бутылкеиз фильма ‘Пассажиры’из фильма ТишинаИз сериала Кухня. 6 сезониз фильма ‘Расплата’ Из фильма Человек-муравейиз фильма ПриглашениеИз фильма Бегущий в лабиринте 2из фильма ‘Молот’из фильма ‘Инкарнация’Из фильма Савва. Сердце воинаИз сериала Легко ли быть молодымиз сериала ‘Ольга’Из сериала Хроники ШаннарыИз фильма Самый лучший деньИз фильма Соседи. На тропе войныМузыка из сериала «Остров»Из фильма ЙоганутыеИз фильма ПреступникИз сериала СверхестественноеИз сериала Сладкая жизньИз фильма Голограмма для короляИз фильма Первый мститель: ПротивостояниеИз фильма КостиИз фильма Любовь не по размеруOST ‘Глубоководный горизонт’Из фильма Перепискаиз фильма ‘Призрачная красота’Место встречи изменить нельзяOST «Гений»из фильма ‘Красотка’Из фильма Алиса в ЗазеркальеИз фильма 1+1 (Неприкасаемые)Из фильма До встречи с тобойиз фильма ‘Скрытые фигуры’из фильма Призывиз сериала ‘Мир Дикого Запада’из игр серии ‘Bioshock’ Музыка из аниме «Темный дворецкий»из фильма ‘Американская пастораль’Из фильма Тарзан. ЛегендаИз фильма Красавица и чудовище ‘Искусственный интеллект. Доступ неограничен»Люди в черном 3’из фильма ‘Планетариум’Из фильма ПрогулкаИз сериала ЧужестранкаИз сериала Элементарноиз сериала ‘Обратная сторона Луны’Из фильма ВаркрафтИз фильма Громче, чем бомбыиз мультфильма ‘Зверопой’Из фильма БруклинИз фильма Игра на понижениеИз фильма Зачарованнаяиз фильма РазрушениеOST «Полный расколбас»OST «Свободный штат Джонса»OST И гаснет светИз сериала СолдатыИз сериала Крыша мираИз фильма Неоновый демонИз фильма Москва никогда не спитИз фильма Джейн берет ружьеИз фильма Стражи галактикииз фильма ‘Sos, дед мороз или все сбудется’OST ‘Дом странных детей Мисс Перегрин’Из игры Contact WarsИз Фильма АмелиИз фильма Иллюзия обмана 2OST Ледниковый период 5: Столкновение неизбежноИз фильма Из тьмыИз фильма Колония Дигнидадиз фильма ‘Страна чудес’Музыка из сериала ‘Цвет черёмухи’Из фильма Образцовый самец 2из фильмов про Гарри Поттера Из фильма Дивергент, глава 3: За стеной из мультфильма ‘Монстр в Париже’из мультфильма ‘Аисты’Из фильма КоробкаИз фильма СомнияИз сериала Ходячие мертвецыИз фильма ВыборИз сериала Королек — птичка певчаяДень независимости 2: ВозрождениеИз сериала Великолепный векиз фильма ‘Полтора шпиона’из фильма Светская жизньИз сериала Острые козырьки

Editor Styles

This panel controls stylistic editing options, as described below:

Use Spaces for Tabs

When the tab key is pressed, Simply Fortran normally introduces a true tab character into the text. If this option is enabled, however, an equivalent number of spaces is added rather than the tab character.

If the editor is currently in “Makefile” mode, i.e. the user is editing a Makefile, this option will be ignored, and true tab characters will be used.

Tab Width

The tab width specifies the size of either the tab character in the editor or the equivalent number of spaces if the Use Spaces for Tabs option is enabled.


C int getlistboxtext (index, position, text, text_length)Fortran function getlistboxtext (index position, text)


Retrieves the text for a specified item in a list box. If the text parameter is omitted or is NULL, this function will return the length of the text without a null terminating character. The text parameter must be sized properly to accept the text.


Parameter C Type Fortran Type Description
index int integer The list box of interest
position int integer The position of the item in the list box
text char * character(*) The buffer to receive the text contents
text_length int N/A The length of the text buffer

Return Value

C intFortran integer

The length of the text at the position, CONTROLS_ERROR if a general error occurred, or CONTROLS_BUFFER_TOO_SMALL if the text buffer is too small.

Компиляция с GNU Make

Работать с командной строкой, когда фалов проекта много, не слишком удобно (даже если все прописывать в  или ). Задачу автоматизации сборки берет на себя и/или олдскульная технология составления -файлов, которые можно легко вызывать на исполнение, например, из любимого текстового редактора. Преимущество , в частности, в том, что каждый раз будут перекомпилироваться не все файлы проекта, а только те, которые изменились.

Если фортран был поставлен из дистрибутива или , утилита находится в папке под именем . Для простоты скопируем (продублируем) ее под именем просто . В дистрибутиве от Ляо она сразу называется .

Если на машине инсталлировано несколько сред программирования, могут стоять и различные мэйки, которые также могут вызываться по команде не совсем к месту. Убедимся, что так вызывается именно GNU Make, набрав . Это должно выдавать приблизительно следующее:

Инструкции компиляции пишутся в текстовом файле, который обычно называется (без расширения) и располагается в папке с исходниками.

-файл состоит из правил и переменных. Правила имеют следующий синтаксис:

Правило представляет собой набор команд, выполнение которых приведет к сборке файлов-целей из файлов-реквизитов. Правило сообщает , что файлы, получаемые в результате работы команд (цели), являются зависимыми от соответствующих файлов-реквизитов. никак не проверяет и не использует содержимое файлов-реквизитов, однако, указание списка файлов-реквизитов требуется только для того, чтобы убедился в наличии этих файлов перед началом выполнения команд и для отслеживания зависимостей между файлами.

Простейший для программы из одного модуля (наш первый пример) может выглядеть так:

Здесь вначале определена переменная , значение которой затем «дословно» подставляется в команды – везде, где написано .

Далее определены две цели: и , без реквизитов, но зато с командами.

Если из рабочего каталога вызвать

то мейк отработает первую цель, а именно – скомпилирует и запустит нашу программу. При этом файл подхватится по умолчанию. Первую цель, определенную в файле, можно вызывать еще проще, написав просто

Можно также указать требуемый мейк-файл явно, тогда он может называться как нам угодно:

Запуск с другой целью, , сотрет все промежуточные файлы проекта:

Теперь составим чуть более сложный для нашего второго примера с тремя модулями. При этом предусмотрим возможность управления вариантами компиляции с разными опциями, путем их комментирования/раскомментирования. Пусть также помещается в отдельную папку , которая должна лежать рядом с папкой для исходного кода.

Возможно, это не лучший стиль написания , но для меня он «родной» и наглядный.

В главной цели перед командой запуска файла мы указали реквизит, одноименный с названием программы:

 – как хороший солдат, любой ценой (но желательно наименьшей), должен выполнить поставленную перед ним цель. А заключается она в исполнении команд, при этом обязательным условием перед их исполнением является наличие реквизита. В качестве реквизита основной цели мы указали необходимость достижения «дочерней» цели, правило для которой описали так:

Оно требует наличия еще трех реквизитов – готовых объектных файлов . Если они имеются, должна быть выполнена команда по их линковке в .

Выражение означает «подставить сюда текущую цель», а  – «подставить сюда текущий реквизит».

Цели, связанные с данными реквизитами, мы описали так:

Это значит, что для достижения очередной цели надо, чтобы присутствовал файл , после чего его надо скомпилировать в объектный файл.

, как любой нормальный боец, чрезвычайно ленив. Если какая-то цель была уже выполнена, он не будет рваться достигать ее еще раз. Если у него уже есть скомпилированный объектный файл, он его компилировать повторно не будет. Но он – все же очень исполнительный и прилежный боец. Если файл исходника был изменен позже объектного файла, старательно это исправит, перекомпилировав объектный файл снова.

Здесь находится перевод официальной справки по GNU Make.

Здесь – хороший материал «Эффективное использование GNU Make» от Владимира Игнатова.

Make Options

The final panel provides control over the project’s Makefile.

Makefile Name

This text box specifies the name of the Makefile to be created and used by Simply Fortran during the build process. This file will be created in the project’s directory.

Always Regenerate Makefile

By enabling this option, Simply Fortran will regenerate the makefile associated with the current project every time the user initiates the build process . Any user-created changes to a makefile will be destroyed if this option is selected. All dependencies will be updated during every build cycle, however, which is often useful for development projects and eliminates the generate makefile step.


C int createcheckbox (x, y, width, height, label, callback)Fortran function createcheckbox (x, y, width, height, label, callback)


Creates a check box within a window. The check box is automatically managed; when clicked, the checkbox state is flipped. The label will appear to the right of the actual check box on most systems.


Parameter C Type Fortran Type Description
x int integer Leftmost position of the check box
y int integer Topmost position of the check box
width int integer Width of the check box
height int integer Height of the check box
label const char * character(*) Text to display on the check box
callback void callback( void ) subroutine callback() The procedure to call when the check box is clicked


The colors utilized by the editor can be modified by the user. A drop-down box specifies which color component to change, and the Select… button opens a selection dialog. Because Simply Fortran features syntax highlighting, the user can configure keywords, comments, and variables to stand out from each other.

The default light and dark theme buttons will set the editor colors to sensible light and dark colors respectively.

Under the colors drop-down, an Import Theme… button allows the user to select and import a Visual Studio 2010-2013 color theme.

The font selection dropdown and the associated size text box allows the user to adjust the fonts used in Simply Fortran. The font size may also be increased in real-time within the editor by holding the Control key while moving the mouse’s scroll wheel.

The menu mode option allows the user to switch between themed, custom menus to match the overall Simply Fortran theme and system menus that rely on Windows for management and drawing.

The toolbar button size option can change the size of toolbar buttons throughout Simply Fortran.


C int addmenu (title, parent)Fortran function addmenu (title, parent)


Creates a menu within a window. This routine can be used to create the root menu bar for a window or to add subsequent menus to the window’s menu bar by properly specifying the parent value.


Parameter C Type Fortran Type Description
label const char * character(*) Text to display in a menu. Unused if the menu being created is the root menu bar for a window.
parent int integer The parent menu to which to add this menu. If omitted or specified as MENU_FOR_WINDOW, a menu bar will be added.

Return Value

C intFortran integer

An identifier of the menu. If a root menu is attempted to be added twice, this routine will return the error value MENU_ERROR rather than a menu identifier.


The gfortran maintainers offer nice Apple-style installers for macOS: Detailed instructions can be found here.

Other projects packaging GCC (and gfortran) binaries for Mac include:

  • Homebrew offers the latest stable gfortran release as part of the «gcc» package.

  • HPC Mac OS X offers GCC builds, which include gfortran

  • MacPorts (package name, e.g., «gcc48») — the fastest way to get a developer version of GCC. MacPorts comes with a packing software, but all software is compiled before installation. For the developer version, the «Portfile» is updated approx. weekly.

  • Fink offers GCC packages (all released versions) — similar to MacPorts, but also offers binaries; it does not have the developer versions, just the releases.

Правила позиции столбца

Fortran 77 не является языком свободного формата, но имеет очень строгий набор правил для форматирования исходного кода. Наиболее важными правилами являются правила расположения столбцов:

  • Col. 1: Blank или «c» или «*» для комментариев.
  • Col. 2-5: метка оператора.
  • Col. 6: продолжение предыдущей строки.
  • Col. 7-72: утверждение.
  • Col. 73- 80: Номер последовательности.

Строкой Fortran, начинающейся с буквы «c» или звездочкой в первом столбце, является комментарий. Комментарии могут появляться в любом месте программы. Хорошо написанные, они имеют решающее значение для читаемости программы. Коммерческие коды Fortran часто содержат около 50% комментариев. Также можно столкнуться с программами, которые используют восклицательный знак (!). Это очень нестандартно в Fortran 77, но разрешено в Fortran 90.

Восклицательный знак может появляться в любом месте в строке. Иногда заявление не вписывается в одну строку, тогда можно разбить оператор на две или более строк и использовать знак продолжения в позиции.


  1. C23456789 — это демонстрирует положение столбца.
  2. «C» — следующий оператор проходит две области физических линий.
  3. Area = 3.14159265358979+ * r * r.

Пустые пробелы игнорируются, начиная с «Фортрана 77». Поэтому, если удалить все пробелы в Fortran 77, программа по-прежнему синтаксиально правильная, хотя при этом почти нечитаемая для операторов.

Editor Appearance

Options on this panel control the appearance of the editor (excluding colors and fonts).

Show Vertical Line

Displaying a vertical line is useful for determining when a single line of text is approaching a limit. For example, the Fortran 90 standard dictates that the maximum length of a single line is 132 characters. Enabling this guide can make development easier.

Indentation Guides

Indentation guides are useful in lining up indented text within a Fortran source file. In the case of large loops, for example, where the loop contents are indented, the guide can be used to determine where the dedented loop closing should be place.

Word Wrap

Enabling this option causes lines wider than the editor tab to wrap to the next line. However, this wrapping is performed for display purposes only; it is not reflected in the saved file. When a line does wrap, a small arrow will appear on subsequent display lines to indicate that they are actually continuations of the previous line.

Caret Width

This number specifies the width of the text cursor within the editor tab. This number can be either 1, 2, or 3, with 3 being the thickest.


C void outtextxy (x, y, text)Fortran subroutine outtextxy (x, y, text)


Writes the specified string to the current window at the specified graphics coordinates. This routine will respect new line characters within the string. After this call, the text position will be the text line below the just-drawn text, effectively adding a line feed after output. This routine is identical to calling settextxy followed by outtext with the appropriate parameters.


Parameter C Type Fortran Type Description
x int integer The horizontal coordinate to start drawing text, representing the left-most text position
y int integer The vertical coordinate to start drawing text, representing the top-most text position
text char * character(*) The text to output

Project Objectives

We strive to provide a high quality Fortran compiler that works
well on a variety of native targets. This means:

  • Conformance to Fortran standards, primarily Fortran 95, 2003,
    and 2008

  • Performance of executables and computational accuracy

  • Reasonable compile speed and cross compilation capability

  • Good diagnostics and debugging features

  • Legacy code support where practical.

Extensions in GNU Fortran

The initial goal of the GNU Fortran Project was construction of a
Fortran 95 compiler that complies with the ISO Fortran 95 Programming
Language standard [ISO/IEC 1539-1:1997(E)]. We are now well into
F2003 and F2008 features.
The GFortran
wiki and our bug tracker
list features under development or yet to be implemented. Compiler
capability is quite extensive and includes nearly all g77 features.
We highly encourage users to move from g77, which is no longer
maintained, and start taking advantage of GFortran’s modern features.
Legacy g77 code will compile fine in almost all cases.


C int graphresult ( )Fortran function graphresult ( )

Return Value

C intFortran integer

Ths return code will always be one of the following values:

Constant Description
grOk No error
grNoInitGraph (BGI) graphics not installed (use initgraph)
grNotDetected Graphics hardware not detected
grFileNotFound Device driver file not found
grInvalidDriver Invalid device driver file
grNoLoadMem Not enough memory to load driver
grNoScanMem Out of memory in scan fill
grNoFloodMem Out of memory in flood fill
grFontNotFound Font file not found
grNoFontMem Not enough memory to load font
grInvalidMode Invalid graphics mode for selected driver
grError Graphics error
grIOerror Graphics I/O error
grInvalidFont Invalid font file
grInvalidFontNum Invalid font number
grInvalidDeviceNum Invalid device number
grInvalidVersion Invalid version number


This panel provides the user with some basic parameters for the linking step of the build process.

Static Linking

The first group of buttons controls whether the C, C++, and Fortran runtime libraries should be statically linked to the project. It is generally suggested that users select All Static because it eliminates dependencies on DLLs that may or may not be present on the path of the system where the project’s target will be used.

Build Import Library

This option is only enabled when constructing a shared library. When enabled, an import library will be generated along with the target DLL, which can ease linking the target DLL with other projects. This option is not available on macOS.

Link BLAS and LAPACK Libraries

Enabling this options links the OpenBLAS library included with Simply Fortran with your library or executable. The OpenBLAS library includes optimized versions of Basic Linear Algebra Subprograms (BLAS) and Linear Algebra Package (LAPACK) routines commonly used in Fortran software.

Оцените статью
Рейтинг автора
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
Добавить комментарий