This is a standing article in Fortran Forum. The first version appeared in Fortran Forum Volume 26, Number 1, April 2007. The basis for the entries in the list of features was a report by John Reid The original report can be found at: ftp://ftp.nag.co.uk/sc22wg5/N1551-N1600/N1579.pdf An updated version of this report was included in Fortran Forum. An electronic version can be found at: ftp://ftp.nag.co.uk/sc22wg5/N1601-N1650/N1648.pdf If you are a compiler vendor and would like to be included in future versions of this table please email one of us with details and they will be added to the table and published in Fortran Forum.
{"title":"Compiler support for the Fortran 2003 standard","authors":"I. Chivers, J. Sleightholme","doi":"10.1145/1243413.1243414","DOIUrl":"https://doi.org/10.1145/1243413.1243414","url":null,"abstract":"This is a standing article in Fortran Forum. The first version appeared in Fortran Forum Volume 26, Number 1, April 2007. The basis for the entries in the list of features was a report by John Reid The original report can be found at: ftp://ftp.nag.co.uk/sc22wg5/N1551-N1600/N1579.pdf An updated version of this report was included in Fortran Forum. An electronic version can be found at: ftp://ftp.nag.co.uk/sc22wg5/N1601-N1650/N1648.pdf If you are a compiler vendor and would like to be included in future versions of this table please email one of us with details and they will be added to the table and published in Fortran Forum.","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"121 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132894559","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
This authors' August 2006 article contained a discussion on the use of submodules to improve encapsulation for a dynamic polymorphism emulation which is incorrect.
本文作者在2006年8月发表的文章中讨论了使用子模块来改进动态多态性仿真的封装,这是不正确的。
{"title":"Correction on \"Dynamic Polymorphism in Fortran 95\" from August 2006 issue","authors":"Reinhold Bader","doi":"10.1145/1243413.1243416","DOIUrl":"https://doi.org/10.1145/1243413.1243416","url":null,"abstract":"This authors' August 2006 article contained a discussion on the use of submodules to improve encapsulation for a dynamic polymorphism emulation which is incorrect.","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"43 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132024477","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
The following is a list of companies and organisations that provide Fortran compilers that conform to the Fortran 90 or 95 standard. Some of these compilers also implement one or more features of the Fortran 2003 standard.
{"title":"Fortran resources: compilers","authors":"I. Chivers, J. Sleightholme","doi":"10.1145/1189022.1189025","DOIUrl":"https://doi.org/10.1145/1189022.1189025","url":null,"abstract":"The following is a list of companies and organisations that provide Fortran compilers that conform to the Fortran 90 or 95 standard. Some of these compilers also implement one or more features of the Fortran 2003 standard.","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"91 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2006-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117345370","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
This is the second in a series of articles about converting archaic (66, 77) Fortran to modern (90, 95, 2003) Fortran. In the first, I discussed revision control (rcs), compilation control (make), and checking procedure interfaces and common blocks. The idea is to give an older, Fortran 77 (or earlier) code a check-up before trying to modify it. I also discussed automatic conversion of older Fixed Format source files to the modern Free Format. Free Format is easier to use, and can eliminate some problems present when using Fixed Format, mainly associated with searching for names. In this article, I'll discuss the Fortran kind mechanism for selecting types and the Fortran module for sharing data among procedures. Next, I'll try to tie the notions of agreement in type, kind, and rank, the use of procedure interfaces and common block consistency issues together with the use of modules.
{"title":"Archaic to modern 2: kinds and modules","authors":"D. Nagle","doi":"10.1145/1189022.1189023","DOIUrl":"https://doi.org/10.1145/1189022.1189023","url":null,"abstract":"This is the second in a series of articles about converting archaic (66, 77) Fortran to modern (90, 95, 2003) Fortran. In the first, I discussed revision control (rcs), compilation control (make), and checking procedure interfaces and common blocks. The idea is to give an older, Fortran 77 (or earlier) code a check-up before trying to modify it. I also discussed automatic conversion of older Fixed Format source files to the modern Free Format. Free Format is easier to use, and can eliminate some problems present when using Fixed Format, mainly associated with searching for names. In this article, I'll discuss the Fortran kind mechanism for selecting types and the Fortran module for sharing data among procedures. Next, I'll try to tie the notions of agreement in type, kind, and rank, the use of procedure interfaces and common block consistency issues together with the use of modules.","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"2017 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2006-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127550780","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
There was a thread on one of the news lists about debugging Fortran programs and the major source of information on the web is the Polyhedron site where they look at the diagnostic capability of a range of compilers under Windows and Linux. The following has been put together from some guidelines that we have developed from teaching Fortran within the University of London (Imperial College, Chelsea College, Queen Elizabeth College and King's College, from 1978 to the present) and the information at the Polyhedron site.
{"title":"Compiler switches for developing Fortran programs","authors":"I. Chivers, J. Sleightholme","doi":"10.1145/1189022.1189024","DOIUrl":"https://doi.org/10.1145/1189022.1189024","url":null,"abstract":"There was a thread on one of the news lists about debugging Fortran programs and the major source of information on the web is the Polyhedron site where they look at the diagnostic capability of a range of compilers under Windows and Linux. The following has been put together from some guidelines that we have developed from teaching Fortran within the University of London (Imperial College, Chelsea College, Queen Elizabeth College and King's College, from 1978 to the present) and the information at the Polyhedron site.","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2006-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130561819","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
This article discusses the implementation of generic list or tree structures in Fortran 95 via emulation of dynamic polymorphism. The method allows the unified handling of multiple kinds of information structures [1] using a single intermediate module. It is shown that a well-designed implementation additionally requires the use of the submodule feature as described in the Technical Report ISO/IEC 19767.
{"title":"Dynamic polymorphism in Fortran 95: how submodules can help","authors":"Reinhold Bader","doi":"10.1145/1148105.1148106","DOIUrl":"https://doi.org/10.1145/1148105.1148106","url":null,"abstract":"This article discusses the implementation of generic list or tree structures in Fortran 95 via emulation of dynamic polymorphism. The method allows the unified handling of multiple kinds of information structures [1] using a single intermediate module. It is shown that a well-designed implementation additionally requires the use of the submodule feature as described in the Technical Report ISO/IEC 19767.","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"12 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2006-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117186341","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
The article by Markus [1] discusses the subject of object-oriented (OO) design patterns and describes ways in which three well-known patterns might be implemented in Fortran 90/95. It appears that the idea of object-oriented design patterns in Fortran might just be coming of age and it is a very appropriate subject for discussion in a Forum such as this.We have been developing our own implementations of design patterns in Fortran 90/95 for some time and have one paper under review [2] and another being presented at the 6th Workshop on Parallel/High-Performance Object Oriented Scientific Computing (POOSC) in Nantes, France in July 2006 [3]. Our application area is particle-in-cell simulations in plasma physics, but the results that we have obtained will, we hope, be of interest to Fortran 90/95 programmers in general.Our own starting point with design patterns in Fortran 90/95 stems from the literature on object-based programming in that language [4-10]. Several authors have observed that the obvious unit of encapsulation, the Fortran 90/95 module, can be thought of as an object-based class: it can support a type which defines the stored data together with subprograms which can operate on that data. With some discipline and ingenuity, these authors have shown how to emulate the notions of object construction and destruction, inheritance and polymorphism. These emulations were actually implemented using object composition. For example, one child module might include another parent module in order to simulate inheritance. As Markus correctly points out, most of the famous design patterns are based on object composition and the authors of [4-10] have, frequently, been using design patterns as a way of simulating OO behaviour.Because the subject of OO design patterns in Fortran 90/95 is so fresh, there is ample scope for them to be presented in different ways by different authors. Whilst appreciating the clarity and relevance of Markus' expositions, we would like to make some points of criticism which we believe are important to a further discussion of this topic. The points we make refer to the ideas expressed in the book by Gamma et al. [11] which is considered to be the fundamental exposition of the topic of OO design patterns.
{"title":"Comments on the Arjen Markus article: Design patterns and Fortran","authors":"H. Gardner, V. Decyk","doi":"10.1145/1148105.1148107","DOIUrl":"https://doi.org/10.1145/1148105.1148107","url":null,"abstract":"The article by Markus [1] discusses the subject of object-oriented (OO) design patterns and describes ways in which three well-known patterns might be implemented in Fortran 90/95. It appears that the idea of object-oriented design patterns in Fortran might just be coming of age and it is a very appropriate subject for discussion in a Forum such as this.We have been developing our own implementations of design patterns in Fortran 90/95 for some time and have one paper under review [2] and another being presented at the 6th Workshop on Parallel/High-Performance Object Oriented Scientific Computing (POOSC) in Nantes, France in July 2006 [3]. Our application area is particle-in-cell simulations in plasma physics, but the results that we have obtained will, we hope, be of interest to Fortran 90/95 programmers in general.Our own starting point with design patterns in Fortran 90/95 stems from the literature on object-based programming in that language [4-10]. Several authors have observed that the obvious unit of encapsulation, the Fortran 90/95 module, can be thought of as an object-based class: it can support a type which defines the stored data together with subprograms which can operate on that data. With some discipline and ingenuity, these authors have shown how to emulate the notions of object construction and destruction, inheritance and polymorphism. These emulations were actually implemented using object composition. For example, one child module might include another parent module in order to simulate inheritance. As Markus correctly points out, most of the famous design patterns are based on object composition and the authors of [4-10] have, frequently, been using design patterns as a way of simulating OO behaviour.Because the subject of OO design patterns in Fortran 90/95 is so fresh, there is ample scope for them to be presented in different ways by different authors. Whilst appreciating the clarity and relevance of Markus' expositions, we would like to make some points of criticism which we believe are important to a further discussion of this topic. The points we make refer to the ideas expressed in the book by Gamma et al. [11] which is considered to be the fundamental exposition of the topic of OO design patterns.","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"50 2","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2006-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134543911","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Two important meetings for the next revision of Fortran were held recently. WG5 met jointly with J3 in Fairfax, Virginia, Feb. 13-17 and J3 met in Las Vegas, May 8-12.The framework was decided at last years' WG5 meeting and was not substantially changed at this year's WG5 meeting. Two large items (bits and intelligent macros) were left as do if time, which made the May J3 meeting important, since the schedule that we have adopted (aiming for the revision to be Fortran 2008) demanded that edits against Fortran 2003 for all the new features be completed at that meeting.In the event both were deemed to be ready, but interoperability of pointers, allocatables, assumed-shape arrays, and optional arguments was not ready and will be deferred to a Technical Report.There was a discussion at the J3 meeting over moving co-arrays to a Technical Report or another part of the standard, despite the WG5 decision at the February meeting that it be a first priority item. However, the major vendors reported pressure from users to provide co-arrays and it was decided (straw vote 6-3-2) to keep them. A significant argument was that it would be unsatisfactory to renege on the decision of last year that co-arrays would be there.This seems a good moment to give a quick summary of the new features. For further details, see the WG5 repositoryftp://ftp.nag.co.uk/sc22wg5/N1601-N1650/N1649.txtand the J3 Work Planhttp://j3-fortran.org/doc/meeting/176/06-010r2.pdfEach of the items in the Repository has been given an estimated severity level, as defined in N1594. I will devote separate sections to the three large items (above level 5) and list those with severity level 4 or 5.
{"title":"The major features of the next revision of Fortran","authors":"J. Reid","doi":"10.1145/1148105.1148108","DOIUrl":"https://doi.org/10.1145/1148105.1148108","url":null,"abstract":"Two important meetings for the next revision of Fortran were held recently. WG5 met jointly with J3 in Fairfax, Virginia, Feb. 13-17 and J3 met in Las Vegas, May 8-12.The framework was decided at last years' WG5 meeting and was not substantially changed at this year's WG5 meeting. Two large items (bits and intelligent macros) were left as do if time, which made the May J3 meeting important, since the schedule that we have adopted (aiming for the revision to be Fortran 2008) demanded that edits against Fortran 2003 for all the new features be completed at that meeting.In the event both were deemed to be ready, but interoperability of pointers, allocatables, assumed-shape arrays, and optional arguments was not ready and will be deferred to a Technical Report.There was a discussion at the J3 meeting over moving co-arrays to a Technical Report or another part of the standard, despite the WG5 decision at the February meeting that it be a first priority item. However, the major vendors reported pressure from users to provide co-arrays and it was decided (straw vote 6-3-2) to keep them. A significant argument was that it would be unsatisfactory to renege on the decision of last year that co-arrays would be there.This seems a good moment to give a quick summary of the new features. For further details, see the WG5 repositoryftp://ftp.nag.co.uk/sc22wg5/N1601-N1650/N1649.txtand the J3 Work Planhttp://j3-fortran.org/doc/meeting/176/06-010r2.pdfEach of the items in the Repository has been given an estimated severity level, as defined in N1594. I will devote separate sections to the three large items (above level 5) and list those with severity level 4 or 5.","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"31 4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2006-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116090419","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
A remarkable craze swept though many countries in the year 2005. Already known and popular in Japan, sudoku was introduced into the UK and thence into other European countries and the USA. Its rules are simple. Given a 9 x 9 grid with some numbers already in place, the solver has to fill in the missing values such that, in each row, each column and each 3 x 3 box, the digits 1 to 9 appear once and once only. The starting digits in this example are arranged symmetrically, which is merely a matter of taste. However, it is widely accepted that a properly formed puzzle has a unique solution and that it can thus be solved, without having to make any guesses, by pure logic.An excellent source of further details is the Wikipedia article at http://en.wikipedia.org/wiki/Sudoku
{"title":"A Sudoku program in Fortran 95","authors":"M. Metcalf","doi":"10.1145/1124708.1124709","DOIUrl":"https://doi.org/10.1145/1124708.1124709","url":null,"abstract":"A remarkable craze swept though many countries in the year 2005. Already known and popular in Japan, sudoku was introduced into the UK and thence into other European countries and the USA. Its rules are simple. Given a 9 x 9 grid with some numbers already in place, the solver has to fill in the missing values such that, in each row, each column and each 3 x 3 box, the digits 1 to 9 appear once and once only. The starting digits in this example are arranged symmetrically, which is merely a matter of taste. However, it is widely accepted that a properly formed puzzle has a unique solution and that it can thus be solved, without having to make any guesses, by pure logic.An excellent source of further details is the Wikipedia article at http://en.wikipedia.org/wiki/Sudoku","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"50 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2006-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121369865","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}