[{"data":1,"prerenderedAt":911},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fmiscellaneous-msc\u002Fmsc00-f":31,"surround-\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fmiscellaneous-msc\u002Fmsc00-f":690,"sidebar-sei-cert-fortran-coding-standard":699},[4,8],{"title":5,"path":6,"_path":6,"fromAppConfig":7},"Home","\u002F",true,{"title":9,"path":10,"children":11,"_path":30,"fromAppConfig":7},"Coding Standards","\u002Fcoding-standards\u002F",[12,15,18,21,24,27],{"title":13,"path":14},"Android Coding Standard","\u002Fandroid-secure-coding-standard\u002F",{"title":16,"path":17},"C Coding Standard","\u002Fsei-cert-c-coding-standard\u002F",{"title":19,"path":20},"C++ Coding Standard","\u002Fsei-cert-cpp-coding-standard\u002F",{"title":22,"path":23},"Fortran Coding Standard","\u002Fsei-cert-fortran-coding-standard\u002F",{"title":25,"path":26},"Java Coding Standard","\u002Fsei-cert-oracle-coding-standard-for-java\u002F",{"title":28,"path":29},"Perl Coding Standard","\u002Fsei-cert-perl-coding-standard\u002F","\u002Fcoding-standards",{"id":32,"title":33,"body":34,"description":44,"extension":684,"meta":685,"navigation":7,"path":686,"seo":687,"stem":688,"__hash__":689},"content\u002F9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F12.miscellaneous-msc\u002F2.msc00-f.md","MSC00-F. Compile cleanly at high warning levels",{"type":35,"value":36,"toc":673},"minimark",[37,41,45,64,89,92,102,114,213,218,235,342,349,405,410,486,490,503,574,578,581,637,641,669],[38,39,33],"h1",{"id":40},"msc00-f-compile-cleanly-at-high-warning-levels",[42,43,44],"p",{},"Compile code using the highest warning level available for your compiler and eliminate warnings by modifying the code.",[42,46,47,48,63],{},"According to the [ ",[49,50,52,53,57,58,62],"a",{"href":51},"\u002Fsei-cert-fortran-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Fortran2018","Fortran Standard (subclause 4.2, ",[54,55,56],"em",{},"Conformance"," ",[59,60,61],"span",{},"ISO\u002FIEC 1539-1:2018",")"," ], a Fortran compiler is not required to diagnose every violation that can lead to erroneous or undefined program behavior:",[65,66,67,72,79,85],"blockquote",{},[42,68,69],{},[59,70,71],{},"...",[42,73,74,78],{},[75,76,77],"strong",{},"(2)"," it contains the capability to detect and report the use within a submitted program unit of a form designated herein as obsolescent, insofar as such use can be detected by reference to the numbered syntax rules and constraints;",[42,80,81,84],{},[75,82,83],{},"(3)"," it contains the capability to detect and report the use within a submitted program unit of a form or relationship that is not permitted by the numbered syntax rules or constraints, including the deleted features described in Annex B;",[42,86,87],{},[59,88,71],{},[42,90,91],{},"Compiler warnings provide capabilities to that can identify programming errors in Fortran code, such as implicit or inconsistent procedure interfaces, questionable argument association, possible aliasing, implicit conversions that may change a value, unused entities, suspicious control flow, line truncation, use of nonstandard language extensions, and other constructs that are likely to indicate programming errors.",[65,93,94,99],{},[42,95,96],{},[75,97,98],{},"Tip",[42,100,101],{},"Eliminating compiler warnings does not guarantee that a program conforms to the Fortran standard or is free of defects. Different compilers and static analysis tools can provide different diagnostics and should be used where available.",[42,103,104,105,109,110,113],{},"The following table shows recommended compiler options for the GNU ",[106,107,108],"code",{},"gfortran"," and LLVM ",[106,111,112],{},"flang"," compilers. The availability and precise behavior of diagnostic options are compiler- and version-dependent.",[115,116,117,133],"table",{},[118,119,120],"thead",{},[121,122,123,127,130],"tr",{},[124,125,126],"th",{},"Compiler",[124,128,129],{},"Recommended options",[124,131,132],{},"Purpose",[134,135,136,157,175,188,202],"tbody",{},[121,137,138,143,154],{},[139,140,141],"td",{},[106,142,108],{},[139,144,145,57,148,57,151],{},[106,146,147],{},"-Wall",[106,149,150],{},"-Wextra",[106,152,153],{},"-Wpedantic",[139,155,156],{},"Enable commonly useful warnings, additional diagnostics, warnings for nonstandard extensions.",[121,158,159,161,172],{},[139,160],{},[139,162,163,57,166,57,169],{},[106,164,165],{},"-Wimplicit-interface",[106,167,168],{},"-Wimplicit-procedure",[106,170,171],{},"-Wconversion-extra",[139,173,174],{},"Turn on Fortran-specific warning (e.g. , missing explicit interfaces, implicitly declared procedures, additional implicit conversions).",[121,176,177,179,185],{},[139,178],{},[139,180,181,184],{},[106,182,183],{},"-Werror",".",[139,186,187],{},"Turn all warnings into errors, causing compilation to fail when a warning is emitted.",[121,189,190,194,199],{},[139,191,192],{},[106,193,112],{},[139,195,196],{},[106,197,198],{},"-pedantic",[139,200,201],{},"Warn about language extensions.",[121,203,204,206,210],{},[139,205],{},[139,207,208],{},[106,209,183],{},[139,211,212],{},"Turn warnings into errors, causing compilation to fail when a warning is emitted.",[214,215,217],"h2",{"id":216},"noncompliant-code-example-non-integer-loop-variable","Noncompliant Code Example (Non-Integer Loop Variable)",[42,219,220,221,224,225,228,229,231,232,234],{},"In this noncompliant example, the ",[106,222,223],{},"DO"," construct uses a variable of type ",[106,226,227],{},"REAL"," as its loop variable. The use of a ",[106,230,227],{}," variable as the ",[106,233,223],{}," variable is a deleted Fortran feature. Compilers can continue to support deleted features as extensions, so the program might still compile unless appropriate diagnostic options are enabled.",[236,237,239],"code-block",{"quality":238},"bad",[240,241,246],"pre",{"className":242,"code":243,"language":244,"meta":245,"style":245},"language-fortran shiki shiki-themes github-light-high-contrast github-dark-high-contrast monokai","program main\n  implicit none\n\n  real :: i\n\n  do i = 1.0, 3.0\n    print *, i\n  end do\nend program main\n","fortran","",[106,247,248,260,269,275,289,294,316,328,334],{"__ignoreMap":245},[59,249,252,256],{"class":250,"line":251},"line",1,[59,253,255],{"class":254},"sDW38","program",[59,257,259],{"class":258},"s-GC7"," main\n",[59,261,263,266],{"class":250,"line":262},2,[59,264,265],{"class":254},"  implicit",[59,267,268],{"class":254}," none\n",[59,270,272],{"class":250,"line":271},3,[59,273,274],{"emptyLinePlaceholder":7},"\n",[59,276,278,282,285],{"class":250,"line":277},4,[59,279,281],{"class":280},"sMkm0","  real",[59,283,284],{"class":254}," ::",[59,286,288],{"class":287},"sgGSh"," i\n",[59,290,292],{"class":250,"line":291},5,[59,293,274],{"emptyLinePlaceholder":7},[59,295,297,300,303,306,310,313],{"class":250,"line":296},6,[59,298,299],{"class":254},"  do",[59,301,302],{"class":287}," i ",[59,304,305],{"class":254},"=",[59,307,309],{"class":308},"sFRm2"," 1.0",[59,311,312],{"class":287},", ",[59,314,315],{"class":308},"3.0\n",[59,317,319,322,325],{"class":250,"line":318},7,[59,320,321],{"class":254},"    print",[59,323,324],{"class":254}," *",[59,326,327],{"class":287},", i\n",[59,329,331],{"class":250,"line":330},8,[59,332,333],{"class":254},"  end do\n",[59,335,337,340],{"class":250,"line":336},9,[59,338,339],{"class":254},"end program",[59,341,259],{"class":258},[343,344,346,347,62],"h3",{"id":345},"implementation-details-gfortran","Implementation Details (",[106,348,108],{},[240,350,354],{"className":351,"code":352,"language":353,"meta":245,"style":245},"language-txt shiki shiki-themes github-light-high-contrast github-dark-high-contrast monokai","$ gfortran --version\nGNU Fortran (Ubuntu 14.2.0-4ubuntu2~24.04.1) 14.2.0\n\n$ gfortran -Wall -Werror msc00-f-ncce.f90\nmsc00-f-ncce.f90:6:5:\n\n    6 |   do i = 1.0, 3.0\n      |     1\nError: Deleted feature: Loop variable at (1) must be integer [-Werror]\nf951: all warnings being treated as errors\n","txt",[106,355,356,361,366,370,375,380,384,389,394,399],{"__ignoreMap":245},[59,357,358],{"class":250,"line":251},[59,359,360],{},"$ gfortran --version\n",[59,362,363],{"class":250,"line":262},[59,364,365],{},"GNU Fortran (Ubuntu 14.2.0-4ubuntu2~24.04.1) 14.2.0\n",[59,367,368],{"class":250,"line":271},[59,369,274],{"emptyLinePlaceholder":7},[59,371,372],{"class":250,"line":277},[59,373,374],{},"$ gfortran -Wall -Werror msc00-f-ncce.f90\n",[59,376,377],{"class":250,"line":291},[59,378,379],{},"msc00-f-ncce.f90:6:5:\n",[59,381,382],{"class":250,"line":296},[59,383,274],{"emptyLinePlaceholder":7},[59,385,386],{"class":250,"line":318},[59,387,388],{},"    6 |   do i = 1.0, 3.0\n",[59,390,391],{"class":250,"line":330},[59,392,393],{},"      |     1\n",[59,395,396],{"class":250,"line":336},[59,397,398],{},"Error: Deleted feature: Loop variable at (1) must be integer [-Werror]\n",[59,400,402],{"class":250,"line":401},10,[59,403,404],{},"f951: all warnings being treated as errors\n",[343,406,346,408,62],{"id":407},"implementation-details-flang",[106,409,112],{},[240,411,413],{"className":351,"code":412,"language":353,"meta":245,"style":245},"$ flang --version\nUbuntu flang version 20.1.2 (0ubuntu1~24.04.3)\n\n$ flang -pedantic -Werror msc00-f-ncce.f90\nerror: Semantic errors in msc00-f-ncce.f90\n.\u002Fmsc00-f-ncce.f90:6:6: portability: DO controls should be INTEGER\n    do i = 1.0, 3.0\n       ^\n.\u002Fmsc00-f-ncce.f90:6:10: portability: DO controls should be INTEGER\n    do i = 1.0, 3.0\n           ^^^\n.\u002Fmsc00-f-ncce.f90:6:15: portability: DO controls should be INTEGER\n    do i = 1.0, 3.0\n                ^^^\n",[106,414,415,420,425,429,434,439,444,449,454,459,463,469,475,480],{"__ignoreMap":245},[59,416,417],{"class":250,"line":251},[59,418,419],{},"$ flang --version\n",[59,421,422],{"class":250,"line":262},[59,423,424],{},"Ubuntu flang version 20.1.2 (0ubuntu1~24.04.3)\n",[59,426,427],{"class":250,"line":271},[59,428,274],{"emptyLinePlaceholder":7},[59,430,431],{"class":250,"line":277},[59,432,433],{},"$ flang -pedantic -Werror msc00-f-ncce.f90\n",[59,435,436],{"class":250,"line":291},[59,437,438],{},"error: Semantic errors in msc00-f-ncce.f90\n",[59,440,441],{"class":250,"line":296},[59,442,443],{},".\u002Fmsc00-f-ncce.f90:6:6: portability: DO controls should be INTEGER\n",[59,445,446],{"class":250,"line":318},[59,447,448],{},"    do i = 1.0, 3.0\n",[59,450,451],{"class":250,"line":330},[59,452,453],{},"       ^\n",[59,455,456],{"class":250,"line":336},[59,457,458],{},".\u002Fmsc00-f-ncce.f90:6:10: portability: DO controls should be INTEGER\n",[59,460,461],{"class":250,"line":401},[59,462,448],{},[59,464,466],{"class":250,"line":465},11,[59,467,468],{},"           ^^^\n",[59,470,472],{"class":250,"line":471},12,[59,473,474],{},".\u002Fmsc00-f-ncce.f90:6:15: portability: DO controls should be INTEGER\n",[59,476,478],{"class":250,"line":477},13,[59,479,448],{},[59,481,483],{"class":250,"line":482},14,[59,484,485],{},"                ^^^\n",[214,487,489],{"id":488},"compliant-code-example-non-integer-loop-variable","Compliant Code Example (Non-Integer Loop Variable)",[42,491,492,493,495,496,499,500,502],{},"The issue can be eliminated by declaring the ",[106,494,223],{}," variable as ",[106,497,498],{},"INTEGER"," and using integer initial, limit, and step expressions. This code uses the standard integer form of the ",[106,501,223],{}," construct.",[236,504,506],{"quality":505},"good",[240,507,509],{"className":242,"code":508,"language":244,"meta":245,"style":245},"program main\n  implicit none\n\n  integer :: i\n\n  do i = 1, 3\n    print *, i\n  end do\nend program main\n",[106,510,511,517,523,527,536,540,556,564,568],{"__ignoreMap":245},[59,512,513,515],{"class":250,"line":251},[59,514,255],{"class":254},[59,516,259],{"class":258},[59,518,519,521],{"class":250,"line":262},[59,520,265],{"class":254},[59,522,268],{"class":254},[59,524,525],{"class":250,"line":271},[59,526,274],{"emptyLinePlaceholder":7},[59,528,529,532,534],{"class":250,"line":277},[59,530,531],{"class":280},"  integer",[59,533,284],{"class":254},[59,535,288],{"class":287},[59,537,538],{"class":250,"line":291},[59,539,274],{"emptyLinePlaceholder":7},[59,541,542,544,546,548,551,553],{"class":250,"line":296},[59,543,299],{"class":254},[59,545,302],{"class":287},[59,547,305],{"class":254},[59,549,550],{"class":308}," 1",[59,552,312],{"class":287},[59,554,555],{"class":308},"3\n",[59,557,558,560,562],{"class":250,"line":318},[59,559,321],{"class":254},[59,561,324],{"class":254},[59,563,327],{"class":287},[59,565,566],{"class":250,"line":330},[59,567,333],{"class":254},[59,569,570,572],{"class":250,"line":336},[59,571,339],{"class":254},[59,573,259],{"class":258},[214,575,577],{"id":576},"risk-assessment","Risk Assessment",[42,579,580],{},"Compiler diagnostics can expose defects that lead to incorrect computation, undefined or otherwise nonconforming behavior, portability problems, and security vulnerabilities. Compiling cleanly with strong diagnostics reduces the likelihood that such defects remain undetected, but it does not replace code review, static analysis, testing, or compliance with the other guidelines in this coding standard.",[115,582,583,608],{},[118,584,585],{},[121,586,587,590,593,596,599,602,605],{},[124,588,589],{},"Guideline",[124,591,592],{},"Severity",[124,594,595],{},"Likelihood",[124,597,598],{},"Detectable",[124,600,601],{},"Repairable",[124,603,604],{},"Priority",[124,606,607],{},"Level",[134,609,610],{},[121,611,612,615,618,621,624,627,632],{},[139,613,614],{},"MSC00-F",[139,616,617],{},"Medium",[139,619,620],{},"Likely",[139,622,623],{},"Yes",[139,625,626],{},"No",[139,628,629],{},[75,630,631],{},"P4",[139,633,634],{},[75,635,636],{},"L3",[214,638,640],{"id":639},"related-guidelines","Related Guidelines",[115,642,643,656],{},[118,644,645],{},[121,646,647,650,653],{},[124,648,649],{},"Taxonomy",[124,651,652],{},"Taxonomy item",[124,654,655],{},"Relationship",[134,657,658],{},[121,659,660,663,666],{},[139,661,662],{},"CERT C",[139,664,665],{},"MSC00-C. Compile cleanly at high warning levels",[139,667,668],{},"Related guideline",[670,671,672],"style",{},"html pre.shiki code .sDW38, html code.shiki .sDW38{--shiki-default:#A0111F;--shiki-dark:#FF9492;--shiki-sepia:#F92672}html pre.shiki code .s-GC7, html code.shiki .s-GC7{--shiki-default:#702C00;--shiki-dark:#FFB757;--shiki-sepia:#F8F8F2}html pre.shiki code .sMkm0, html code.shiki .sMkm0{--shiki-default:#A0111F;--shiki-default-font-style:inherit;--shiki-dark:#FF9492;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .sgGSh, html code.shiki .sgGSh{--shiki-default:#0E1116;--shiki-dark:#F0F3F6;--shiki-sepia:#F8F8F2}html pre.shiki code .sFRm2, html code.shiki .sFRm2{--shiki-default:#023B95;--shiki-dark:#91CBFF;--shiki-sepia:#AE81FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":245,"searchDepth":262,"depth":262,"links":674},[675,681,682,683],{"id":216,"depth":262,"text":217,"children":676},[677,679],{"id":345,"depth":271,"text":678},"Implementation Details (gfortran)",{"id":407,"depth":271,"text":680},"Implementation Details (flang)",{"id":488,"depth":262,"text":489},{"id":576,"depth":262,"text":577},{"id":639,"depth":262,"text":640},"md",{},"\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fmiscellaneous-msc\u002Fmsc00-f",{"title":33,"description":44},"9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F12.miscellaneous-msc\u002F2.msc00-f","sgj0gAmoQIYa5Xd6wqNtJB8gpN1qM0TSeINNIjcywQg",[691,695],{"title":692,"path":693,"stem":694,"children":-1},"Miscellaneous (MSC)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fmiscellaneous-msc","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F12.miscellaneous-msc\u002F1.index",{"title":696,"path":697,"stem":698,"children":-1},"MSC01-F. Avoid using legacy or obsolescent Fortran constructs","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fmiscellaneous-msc\u002Fmsc01-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F12.miscellaneous-msc\u002F2.msc01-f",[700],{"title":701,"path":702,"stem":703,"children":704},"SEI CERT Fortran Coding Standard","\u002Fsei-cert-fortran-coding-standard","9.sei-cert-fortran-coding-standard\u002F01.index",[705,706,718,889,907],{"title":701,"path":702,"stem":703},{"title":707,"path":708,"stem":709,"children":710},"Front Matter","\u002Fsei-cert-fortran-coding-standard\u002Ffront-matter","9.sei-cert-fortran-coding-standard\u002F02.front-matter\u002F1.index",[711,712],{"title":707,"path":708,"stem":709},{"title":713,"path":714,"stem":715,"children":716},"Introduction","\u002Fsei-cert-fortran-coding-standard\u002Ffront-matter\u002Fintroduction","9.sei-cert-fortran-coding-standard\u002F02.front-matter\u002F2.introduction\u002F01.index",[717],{"title":713,"path":714,"stem":715},{"title":719,"path":720,"stem":721,"children":722},"Guidelines","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F01.index",[723,724,746,772,798,808,818,831,849,867],{"title":719,"path":720,"stem":721},{"title":725,"path":726,"stem":727,"children":728},"Arrays (ARR)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Farrays-arr","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F02.arrays-arr\u002F1.index",[729,730,734,738,742],{"title":725,"path":726,"stem":727},{"title":731,"path":732,"stem":733},"ARR01-F. Do not use out-of-bounds arrays subscripts","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Farrays-arr\u002Farr01-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F02.arrays-arr\u002F2.arr01-f",{"title":735,"path":736,"stem":737},"ARR02-F. Declare array dummy arguments as assumed-shape","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Farrays-arr\u002Farr02-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F02.arrays-arr\u002F3.arr02-f",{"title":739,"path":740,"stem":741},"ARR03-F. Specify array bounds when copying data to device memory","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Farrays-arr\u002Farr03-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F02.arrays-arr\u002F4.arr03-f",{"title":743,"path":744,"stem":745},"ARR04-F. Ensure arrays ranges mapped to devices cover all accessed elements","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Farrays-arr\u002Farr04-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F02.arrays-arr\u002F5.arr04-f",{"title":747,"path":748,"stem":749,"children":750},"Declarations and Initialization (DCL)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fdeclarations-and-initialization-dcl","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.declarations-and-initialization-dcl\u002F1.index",[751,752,756,760,764,768],{"title":747,"path":748,"stem":749},{"title":753,"path":754,"stem":755},"DCL01-F. Explicitly declare pure procedures","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fdeclarations-and-initialization-dcl\u002Fdcl01-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.declarations-and-initialization-dcl\u002F2.dcl01-f",{"title":757,"path":758,"stem":759},"DCL02-F. Explicitly declare the 'save' attribute or split the variable initialization to prevent unintended behavior","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fdeclarations-and-initialization-dcl\u002Fdcl02-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.declarations-and-initialization-dcl\u002F2.dcl02-f",{"title":761,"path":762,"stem":763},"DCL03-F. Avoid undefined behavior due to uninitialized variables","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fdeclarations-and-initialization-dcl\u002Fdcl03-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.declarations-and-initialization-dcl\u002F2.dcl03-f",{"title":765,"path":766,"stem":767},"DCL04-F. Conditionally initialized variables can lead to undefined behavior","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fdeclarations-and-initialization-dcl\u002Fdcl04-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.declarations-and-initialization-dcl\u002F2.dcl04-f",{"title":769,"path":770,"stem":771},"DCL05-F. Uninitialized output arguments can lead to undefined behavior","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fdeclarations-and-initialization-dcl\u002Fdcl05-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.declarations-and-initialization-dcl\u002F2.dcl05-f",{"title":773,"path":774,"stem":775,"children":776},"Concurrency (CON)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fconcurrency-con","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F1.index",[777,778,782,786,790,794],{"title":773,"path":774,"stem":775},{"title":779,"path":780,"stem":781},"CON01-F. Explicitly declare OpenMP data-sharing attributes for all variables","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fconcurrency-con\u002Fcon01-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F2.con01-f",{"title":783,"path":784,"stem":785},"CON02-F. Protect reduction variables in multithreaded code","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fconcurrency-con\u002Fcon02-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F3.con02-f",{"title":787,"path":788,"stem":789},"CON03-F. Protect multithreading recurrences to avoid data races","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fconcurrency-con\u002Fcon03-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F4.con03-f",{"title":791,"path":792,"stem":793},"CON04-F. Do not use out-of-dimension subscripts in multithreaded code","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fconcurrency-con\u002Fcon04-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F5.con04-f",{"title":795,"path":796,"stem":797},"CON05-F. Ensure correct OpenMP datascoping of variables in parallel regions","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fconcurrency-con\u002Fcon05-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F6.con05-f",{"title":799,"path":800,"stem":801,"children":802},"Exceptions and IEEE Arithmetic (EIA)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fexceptions-and-ieee-arithmetic-eia","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F05.exceptions-and-ieee-arithmetic-eia\u002F1.index",[803,804],{"title":799,"path":800,"stem":801},{"title":805,"path":806,"stem":807},"EIA01-F. Enforce evaluation order in floating-point expressions","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fexceptions-and-ieee-arithmetic-eia\u002Feia01-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F05.exceptions-and-ieee-arithmetic-eia\u002F2.eia01-f",{"title":809,"path":810,"stem":811,"children":812},"Expressions and Assignment (EXA)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fexpressions-and-assignment-exa","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F07.expressions-and-assignment-exa\u002F1.index",[813,814],{"title":809,"path":810,"stem":811},{"title":815,"path":816,"stem":817},"EXA01-F. Do not read uninitialized memory","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fexpressions-and-assignment-exa\u002Fexa01-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F07.expressions-and-assignment-exa\u002F2.exa01-f",{"title":692,"path":693,"stem":694,"children":819},[820,821,822,823,827],{"title":692,"path":693,"stem":694},{"title":33,"path":686,"stem":688},{"title":696,"path":697,"stem":698},{"title":824,"path":825,"stem":826},"MSC02-F. Beware of compiler-specific extensions","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fmiscellaneous-msc\u002Fmsc02-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F12.miscellaneous-msc\u002F3.msc02-f",{"title":828,"path":829,"stem":830},"MSC03-F. Do not depend on undefined behavior","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fmiscellaneous-msc\u002Fmsc03-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F12.miscellaneous-msc\u002F4.msc03-f",{"title":832,"path":833,"stem":834,"children":835},"Procedures (PRC)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fprocedures-prc","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F13.procedures-prc\u002F1.index",[836,837,841,845],{"title":832,"path":833,"stem":834},{"title":838,"path":839,"stem":840},"PRC01-F. Disable the implicit declaration of procedures","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fprocedures-prc\u002Fprc01-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F13.procedures-prc\u002F2.prc01-f",{"title":842,"path":843,"stem":844},"PRC02-F. Avoid implicit interfaces by using module procedures","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fprocedures-prc\u002Fprc02-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F13.procedures-prc\u002F3.prc02-f",{"title":846,"path":847,"stem":848},"PRC03-F. Declare the intent for all dummy arguments","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fprocedures-prc\u002Fprc03-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F13.procedures-prc\u002F4.prc03-f",{"title":850,"path":851,"stem":852,"children":853},"Scope, Association, and Definition (SAD)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fscope-association-and-definition-sad","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F15.scope-association-and-definition-sad\u002F1.index",[854,855,859,863],{"title":850,"path":851,"stem":852},{"title":856,"path":857,"stem":858},"SAD02-F. Minimize imported module entities using the ONLY clause","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fscope-association-and-definition-sad\u002Fsad02-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F15.scope-association-and-definition-sad\u002F2.sad02-f",{"title":860,"path":861,"stem":862},"SAD03-F. Replace common block with modules for safer data encapsulation","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fscope-association-and-definition-sad\u002Fsad03-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F15.scope-association-and-definition-sad\u002F3.sad03-f",{"title":864,"path":865,"stem":866},"Limit the scope of variables and procedures","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fscope-association-and-definition-sad\u002Flimit-the-scope-of-variables-and-procedures","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F15.scope-association-and-definition-sad\u002F4.limit-the-scope-of-variables-and-procedures",{"title":868,"path":869,"stem":870,"children":871},"Types (TYP)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Ftypes-typ","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F16.types-typ\u002F1.index",[872,873,877,881,885],{"title":868,"path":869,"stem":870},{"title":874,"path":875,"stem":876},"TYP01-F. Use Intrinsic Assignment for Character Entities","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Ftypes-typ\u002Ftyp01-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F16.types-typ\u002F2.typ01-f",{"title":878,"path":879,"stem":880},"TYP02-F. Prohibit implicit typing in all program units","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Ftypes-typ\u002Ftyp02-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F16.types-typ\u002F3.typ02-f",{"title":882,"path":883,"stem":884},"TYP03-F. Ensure intrinsic function arguments match intended precision","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Ftypes-typ\u002Ftyp03-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F16.types-typ\u002F4.typ03-f",{"title":886,"path":887,"stem":888},"TYP04-F. Centralize kind definitions to ensure consistent precision","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Ftypes-typ\u002Ftyp04-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F16.types-typ\u002F5.typ04-f",{"title":890,"path":891,"stem":892,"children":893},"Back Matter","\u002Fsei-cert-fortran-coding-standard\u002Fback-matter","9.sei-cert-fortran-coding-standard\u002F05.back-matter\u002F1.index",[894,895,899,903],{"title":890,"path":891,"stem":892},{"title":896,"path":897,"stem":898},"AA. Bibliography","\u002Fsei-cert-fortran-coding-standard\u002Fback-matter\u002Faa-bibliography","9.sei-cert-fortran-coding-standard\u002F05.back-matter\u002F2.aa-bibliography",{"title":900,"path":901,"stem":902},"BB. Definitions","\u002Fsei-cert-fortran-coding-standard\u002Fback-matter\u002Fbb-definitions","9.sei-cert-fortran-coding-standard\u002F05.back-matter\u002F3.bb-definitions",{"title":904,"path":905,"stem":906},"CC. Undefined Behavior","\u002Fsei-cert-fortran-coding-standard\u002Fback-matter\u002Fcc-undefined-behavior","9.sei-cert-fortran-coding-standard\u002F05.back-matter\u002F4.cc-undefined-behavior",{"title":908,"path":909,"stem":910},"Acknowledgments","\u002Fsei-cert-fortran-coding-standard\u002Facknowledgements","9.sei-cert-fortran-coding-standard\u002Facknowledgements",1792097475753]