Nach minimal Beispiel:Beenden äußerte Schleife von Unterprogramm ohne logisches Variable
L1: do while(.true.)
L2: do while(.true.)
if(something=.true.) exit L1
end do L2
end do L1
So, jetzt will ich die innere Schleife L2 in ein Unterprogramm in einem separaten Modul schreiben, um sie miteinander zu verknüpfen, wenn Sie den Code kompiliert, wie gfortran main.f95 innerloop.o -o somename
module innerloop
contains
subroutine innerloop()
L2: do.....
if(something=.true.) exit L1
...
end module innerloop
ich verschiedene Fehler bekommen, auch wenn ich den Namen Schleifen mit globalen variabels zu einem globalen Charakter über ein Modul eingestellt. Aufgrund einer großen Anzahl verschiedener if-Fälle ist es keine Idee, eine globle-Variable als Flag zu definieren und so etwas zu tun: if (something = .true.) Exitvar = .true. und dann ein if-case hinter jeder Unterroutine oder Funktion zu schreiben, wenn die Variable .true ist. oder nicht und alle Schleifen Schritt für Schritt verlassen. Gibt es eine andere Möglichkeit, eine äußere Schleife innerhalb eines separaten Unterprogramms im Modul zu verlassen?
Beachten Sie, dass Sie '==' für logische Vergleiche benötigen. –
Beachten Sie auch, dass '(etwas ==. Wahr.) == (etwas)', der Vergleich mit '.true.' ist redundant. –
@HighPerformanceMark und auch nicht-Standard. – IanH