# Fortran in Maguyva: Code-Graphen für wissenschaftliche Codebasen

Canonical source: https://maguyva.ai/de/languages/fortran

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva unterstützt Fortran mit AST, Symbolen und Graph, damit KI-Agenten Subroutinen, Module und abgeleitete Typen nachverfolgen, bevor sie numerischen Code ändern.

## Unterstützungsüberblick

- Stufe: AST- und Symbol-Support
- Programmierung
- Dateiendungen: .f, .f03, .f08, .f90, .f95, .for, +1 weitere
- Echtes AST-Parsing für syntaxbewusste Suche und strukturellen Kontext.
- Benannte Symbole speisen semantisches Lookup und Cross-Referenzierung. Graph-Navigation ist verfügbar, wenn die Beziehungsextraktion aktiviert ist.
- Diese Sprache liefert Symbole und Beziehungen für die graphgestützte Suche; die unterstützten Kantentypen variieren je nach nativen Konstrukten der Sprache.
- AST-Parsing und Symbolextraktion sind beide verfügbar.

## Am besten geeignet

- Forschungs-, Engineering- und HPC-Teams, die Fortran-Solver, Simulationen oder numerische Bibliotheken pflegen, die älter sind als das aktuelle Team.
- Repositories, in denen `.f`-Dateien in festem Format neben `.f90` und neueren Modulen in freiem Format liegen, oft zusammen mit C- oder Python-Wrappern.
- Agentengestützte Reviews, bei denen zuerst geklärt wird, welche Subroutinen ein gemeinsames Modul berühren, bevor sich die Numerik ändert.

## Agentenabläufe

- Nachverfolgen, welche Subroutinen und Funktionen eine Solver-Routine aufrufen, bevor sich ihre Argumente oder Einheiten ändern.
- Die Module auflisten, die eine Programmeinheit per `use` einbindet, und zu ihren Definitionen springen.
- Finden, wo ein abgeleiteter Typ deklariert ist und welche Prozeduren damit arbeiten.

## Warum Fortran Struktur braucht statt String-Matching

Fortran-Codebasen sind meist alt, groß und von Fachleuten der jeweiligen Domäne geschrieben, nicht von Softwareteams. Routinen namens `SOLVE`, `Solve` und `solve` sind dieselbe Routine. Module werden von Hunderten Dateien gemeinsam genutzt, und die Bibliothek der intrinsischen Prozeduren ist so groß, dass eine naive Aufrufliste vor allem aus `SQRT`, `SUM` und `WRITE` besteht.

Ein Agent, der nur grept, geht in diesem Rauschen unter. Maguyva liefert ihm zuerst die Struktur: welche Programmeinheiten es gibt, welche Module sie nutzen und welche eigenen Routinen sich gegenseitig aufrufen.

## Was Maguyva in Fortran extrahiert

Maguyva deckt Quelltext in festem und freiem Format ab (`.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03`, `.f08`). Funktionen und Subroutinen werden als aufrufbare Symbole extrahiert, und abgeleitete Typen lassen sich in der Struktursuche als Typdefinitionen auswählen.

Der Symbolabgleich ignoriert Groß- und Kleinschreibung, genau wie Fortran selbst. Importbeziehungen entstehen aus `use` und `include`; das Schlüsselwort wird entfernt, sodass der Graph den Modulnamen speichert. Aufrufe, Lesezugriffe, Zuweisungen, Typreferenzen und Vererbung aus erweiterten abgeleiteten Typen sind ebenfalls Teil des Graphen.

Der Beziehungsfilter entfernt rund 165 intrinsische Prozeduren (I/O-Anweisungen sowie Mathematik-, Array-, String-, Typkonvertierungs- und Bitoperations-Routinen), sodass die verbleibenden Kanten auf deinen eigenen Code zeigen.

## Beispiel-Prompts für Agenten

- „Welche Subroutinen rufen `compute_flux` auf, und welche Module nutzen sie?“ (`find_symbol`, dann `dependency_search` incoming)
- „Verfolge, wie Randbedingungen in der Solver-Schleife angewendet werden.“ (`get_task_context`)
- „Finde jede Programmeinheit, die das Modul `constants` nutzt.“ (`text_pattern_search` nach `use constants`, dann `find_symbol`)

## Bekannte Grenzen

- Fortran hat weder Decorators noch Ausnahmebehandlung, daher sind diese Beziehungstypen als nicht anwendbar markiert.
- Typgebundene Prozeduren teilen sich dieselben Knoten wie gewöhnliche Funktionen und Subroutinen. Nutze in `structural_search` das Preset `functions`; das Preset `methods` wählt keine Fortran-Knoten aus.
- Aufrufe gefilterter intrinsischer Prozeduren erscheinen nicht als Graphkanten. Verwende `text_pattern_search`, wenn du jedes `WRITE` oder `OPEN` brauchst.

## Nächste Schritte

Verbinde ein Repository über den [Schnellstart](/de/docs/quickstart) und prüfe dann die vollständige Unterstützungsmatrix auf der [Kompatibilitätsseite](/de/docs/compatibility). Wenn Fortran neben C-Glue-Code liegt, lies auch den [C-Leitfaden](/de/languages/c).

## Engine-Einordnung

- Die Fortran-Unterstützung deckt Quelltext in festem und freiem Format ab: `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` und `.f08`.
- Funktionen und Subroutinen sind aufrufbare Symbole, der Symbolabgleich ignoriert Groß- und Kleinschreibung, und `use` sowie `include` werden zu Importbeziehungen.
- Etwa 165 intrinsische Prozeduren (I/O-, Mathematik-, Array-, String-, Typkonvertierungs- und Bit-Routinen) werden aus den Beziehungen gefiltert. Dekorator- und Ausnahmebeziehungen sind als nicht anwendbar markiert.

## Nützliche MCP-Einstiegspunkte

- `find_symbol`: Beginne mit dem Namen der Subroutine, der Funktion oder des Moduls; der Abgleich ignoriert wie Fortran die Groß- und Kleinschreibung.
- `dependency_search`: Nutz die eingehende Traversierung auf einer Solver- oder Modulroutine, um vor einer numerischen Änderung jeden Aufrufer zu sehen.
- `get_task_context`: Nutz es für Prompts wie „verfolge, wie Randbedingungen in der Solver-Schleife angewendet werden“.
