[{"data":1,"prerenderedAt":859},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad\u002Flimit-the-scope-of-variables-and-procedures":31,"surround-\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad\u002Flimit-the-scope-of-variables-and-procedures":665,"sidebar-sei-cert-fortran-coding-standard":674},[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":659,"meta":660,"navigation":7,"path":661,"seo":662,"stem":663,"__hash__":664},"content\u002F9.sei-cert-fortran-coding-standard\u002F15.scope-association-and-definition-sad\u002F4.limit-the-scope-of-variables-and-procedures.md","Limit the scope of variables and procedures",{"type":35,"value":36,"toc":651},"minimark",[37,41,45,48,51,69,74,89,204,208,224,314,317,336,409,412,428,502,506,509,587,590,613,617,647],[38,39,33],"h1",{"id":40},"limit-the-scope-of-variables-and-procedures",[42,43,44],"p",{},"Variables and procedures shall be declared in the minimum scope from which all references to the identifier are possible.",[42,46,47],{},"Using a broader scope than necessary increases maintenance cost and the likelihood of unintended name resolution or modification. Restricting scope reduces namespace pollution and limits access to identifiers from unrelated program units.",[42,49,50],{},"In modern Fortran, adhering to this rule includes:",[52,53,54,58,61],"ol",{},[55,56,57],"li",{},"Avoid using global or module-level variables when local variables or argument passing are sufficient.",[55,59,60],{},"Declaring variables within the smallest enclosing block or procedure in which they are used.",[55,62,63,64,68],{},"Restricting the visibility of module procedures using the ",[65,66,67],"code",{},"private"," attribute.",[70,71,73],"h2",{"id":72},"noncompliant-code-example","Noncompliant Code Example",[42,75,76,77,80,81,84,85,88],{},"In this noncompliant example, the function helper_calc is intended for internal use by the ",[65,78,79],{},"public_routine"," . However, in Fortran, module procedures have public visibility by default. As a result, ",[65,82,83],{},"helper_calc"," is accessible to any program unit that uses ",[65,86,87],{},"math_mod"," , unnecessarily exposing an internal implementation detail.",[90,91,93],"code-block",{"quality":92},"bad",[94,95,100],"pre",{"className":96,"code":97,"language":98,"meta":99,"style":99},"language-fortran shiki shiki-themes github-light-high-contrast github-dark-high-contrast monokai","module math_mod\n  implicit none\n\ncontains \n  ! Noncompliant: Default public visibility\n  function helper_calc(x) result(y)\n    real, intent(in) :: x\n    real :: y\n    y = x * 2.0\n  end function helper_calc\n\n  subroutine public_routine(val)\n    real, intent(inout) :: val\n    val = helper_calc(val)\n  end subroutine public_routine\n\nend module math_mod\n","fortran","",[65,101,102,110,116,122,128,134,140,146,152,158,164,169,175,181,187,193,198],{"__ignoreMap":99},[103,104,107],"span",{"class":105,"line":106},"line",1,[103,108,109],{},"module math_mod\n",[103,111,113],{"class":105,"line":112},2,[103,114,115],{},"  implicit none\n",[103,117,119],{"class":105,"line":118},3,[103,120,121],{"emptyLinePlaceholder":7},"\n",[103,123,125],{"class":105,"line":124},4,[103,126,127],{},"contains \n",[103,129,131],{"class":105,"line":130},5,[103,132,133],{},"  ! Noncompliant: Default public visibility\n",[103,135,137],{"class":105,"line":136},6,[103,138,139],{},"  function helper_calc(x) result(y)\n",[103,141,143],{"class":105,"line":142},7,[103,144,145],{},"    real, intent(in) :: x\n",[103,147,149],{"class":105,"line":148},8,[103,150,151],{},"    real :: y\n",[103,153,155],{"class":105,"line":154},9,[103,156,157],{},"    y = x * 2.0\n",[103,159,161],{"class":105,"line":160},10,[103,162,163],{},"  end function helper_calc\n",[103,165,167],{"class":105,"line":166},11,[103,168,121],{"emptyLinePlaceholder":7},[103,170,172],{"class":105,"line":171},12,[103,173,174],{},"  subroutine public_routine(val)\n",[103,176,178],{"class":105,"line":177},13,[103,179,180],{},"    real, intent(inout) :: val\n",[103,182,184],{"class":105,"line":183},14,[103,185,186],{},"    val = helper_calc(val)\n",[103,188,190],{"class":105,"line":189},15,[103,191,192],{},"  end subroutine public_routine\n",[103,194,196],{"class":105,"line":195},16,[103,197,121],{"emptyLinePlaceholder":7},[103,199,201],{"class":105,"line":200},17,[103,202,203],{},"end module math_mod\n",[70,205,207],{"id":206},"compliant-solution","Compliant Solution",[42,209,210,211,213,214,216,217,220,221,223],{},"In this compliant solution, the ",[65,212,67],{}," statement is applied at the module level to change the default visibility of all entities to private. The intended public interface is then explicitly declared using the ",[65,215,79],{}," using the ",[65,218,219],{},"public"," attribute. This confines ",[65,222,83],{}," to the module scope and prevents unintended external use.",[90,225,227],{"quality":226},"good",[94,228,230],{"className":96,"code":229,"language":98,"meta":99,"style":99},"module math_mod\n  implicit none\n  private ! Sets default visibility to private\n  public :: public_routine\n\ncontains \n  ! Compliant: Only visible within math_mod\n  function helper_calc(x) result(y)\n    real, intent(in) :: x\n    real             :: y\n    y = x * 2.0\n  end function helper_calc\n\n  subroutine public_routine(val)\n    real, intent(inout) :: val\n    val = helper_calc(val)\n  end subroutine public_routine\n\nend module math_mod\n",[65,231,232,236,240,245,250,254,258,263,267,271,276,280,284,288,292,296,300,304,309],{"__ignoreMap":99},[103,233,234],{"class":105,"line":106},[103,235,109],{},[103,237,238],{"class":105,"line":112},[103,239,115],{},[103,241,242],{"class":105,"line":118},[103,243,244],{},"  private ! Sets default visibility to private\n",[103,246,247],{"class":105,"line":124},[103,248,249],{},"  public :: public_routine\n",[103,251,252],{"class":105,"line":130},[103,253,121],{"emptyLinePlaceholder":7},[103,255,256],{"class":105,"line":136},[103,257,127],{},[103,259,260],{"class":105,"line":142},[103,261,262],{},"  ! Compliant: Only visible within math_mod\n",[103,264,265],{"class":105,"line":148},[103,266,139],{},[103,268,269],{"class":105,"line":154},[103,270,145],{},[103,272,273],{"class":105,"line":160},[103,274,275],{},"    real             :: y\n",[103,277,278],{"class":105,"line":166},[103,279,157],{},[103,281,282],{"class":105,"line":171},[103,283,163],{},[103,285,286],{"class":105,"line":177},[103,287,121],{"emptyLinePlaceholder":7},[103,289,290],{"class":105,"line":183},[103,291,174],{},[103,293,294],{"class":105,"line":189},[103,295,180],{},[103,297,298],{"class":105,"line":195},[103,299,186],{},[103,301,302],{"class":105,"line":200},[103,303,192],{},[103,305,307],{"class":105,"line":306},18,[103,308,121],{"emptyLinePlaceholder":7},[103,310,312],{"class":105,"line":311},19,[103,313,203],{},[70,315,73],{"id":316},"noncompliant-code-example-1",[42,318,319,320,323,324,327,328,331,332,335],{},"In this noncompliant code example, the variable ",[65,321,322],{},"current_count"," is declared at the module level. The subroutine ",[65,325,326],{},"update_counter"," depends on this global variable, giving it unnecessarily wide scope. Any program unit that uses ",[65,329,330],{},"counter_mod"," can access or modify ",[65,333,334],{},"current_count,"," increasing the risk or unintended interactions.",[90,337,338],{"quality":92},[94,339,341],{"className":96,"code":340,"language":98,"meta":99,"style":99},"module counter_mod\n  implicit none\n  integer            :: current_count = 0 ! Noncompliant Scope is too wide\n  integer, parameter :: MAX_COUNT = 100\n\ncontains\n\n  subroutine update_counter()\n    if (current_count \u003C MAX_COUNT) then\n      current_count = current_count + 1\n    end if\n  end subroutine update_counter\n\nend module counter_mod\n",[65,342,343,348,352,357,362,366,371,375,380,385,390,395,400,404],{"__ignoreMap":99},[103,344,345],{"class":105,"line":106},[103,346,347],{},"module counter_mod\n",[103,349,350],{"class":105,"line":112},[103,351,115],{},[103,353,354],{"class":105,"line":118},[103,355,356],{},"  integer            :: current_count = 0 ! Noncompliant Scope is too wide\n",[103,358,359],{"class":105,"line":124},[103,360,361],{},"  integer, parameter :: MAX_COUNT = 100\n",[103,363,364],{"class":105,"line":130},[103,365,121],{"emptyLinePlaceholder":7},[103,367,368],{"class":105,"line":136},[103,369,370],{},"contains\n",[103,372,373],{"class":105,"line":142},[103,374,121],{"emptyLinePlaceholder":7},[103,376,377],{"class":105,"line":148},[103,378,379],{},"  subroutine update_counter()\n",[103,381,382],{"class":105,"line":154},[103,383,384],{},"    if (current_count \u003C MAX_COUNT) then\n",[103,386,387],{"class":105,"line":160},[103,388,389],{},"      current_count = current_count + 1\n",[103,391,392],{"class":105,"line":166},[103,393,394],{},"    end if\n",[103,396,397],{"class":105,"line":171},[103,398,399],{},"  end subroutine update_counter\n",[103,401,402],{"class":105,"line":177},[103,403,121],{"emptyLinePlaceholder":7},[103,405,406],{"class":105,"line":183},[103,407,408],{},"end module counter_mod\n",[70,410,207],{"id":411},"compliant-solution-1",[42,413,414,415,417,418,421,422,424,425,427],{},"In this compliant solution, ",[65,416,322],{}," is declared local to the subroutine with the ",[65,419,420],{},"SAVE"," attribute. This limits visibility to ",[65,423,326],{}," while maintaining its value between calls. The global namespace is protected, and other program units cannot modify ",[65,426,322],{}," directly.",[90,429,430],{"quality":226},[94,431,433],{"className":96,"code":432,"language":98,"meta":99,"style":99},"module counter_mod\n  implicit none\n  integer, parameter :: MAX_COUNT = 100\n\ncontains\n\n  subroutine update_counter()\n    ! Compliant: Scope is limited to this subroutine\n    integer, save :: current_count = 0\n\n    if (current_count \u003C MAX_COUNT) then\n        current_count = current_count + 1\n    end if\n  end subroutine update_counter\n\nend module counter_mod\n",[65,434,435,439,443,447,451,455,459,463,468,473,477,481,486,490,494,498],{"__ignoreMap":99},[103,436,437],{"class":105,"line":106},[103,438,347],{},[103,440,441],{"class":105,"line":112},[103,442,115],{},[103,444,445],{"class":105,"line":118},[103,446,361],{},[103,448,449],{"class":105,"line":124},[103,450,121],{"emptyLinePlaceholder":7},[103,452,453],{"class":105,"line":130},[103,454,370],{},[103,456,457],{"class":105,"line":136},[103,458,121],{"emptyLinePlaceholder":7},[103,460,461],{"class":105,"line":142},[103,462,379],{},[103,464,465],{"class":105,"line":148},[103,466,467],{},"    ! Compliant: Scope is limited to this subroutine\n",[103,469,470],{"class":105,"line":154},[103,471,472],{},"    integer, save :: current_count = 0\n",[103,474,475],{"class":105,"line":160},[103,476,121],{"emptyLinePlaceholder":7},[103,478,479],{"class":105,"line":166},[103,480,384],{},[103,482,483],{"class":105,"line":171},[103,484,485],{},"        current_count = current_count + 1\n",[103,487,488],{"class":105,"line":177},[103,489,394],{},[103,491,492],{"class":105,"line":183},[103,493,399],{},[103,495,496],{"class":105,"line":189},[103,497,121],{"emptyLinePlaceholder":7},[103,499,500],{"class":105,"line":195},[103,501,408],{},[70,503,505],{"id":504},"risk-assessment","Risk Assessment",[42,507,508],{},"Failure to minimize scope limits the compiler's ability to optimize and increases the likelihood of name collisions and unintended side effects. It degrades the locality of reference and makes the code difficult to review and maintain.",[510,511,512,533],"table",{},[513,514,515],"thead",{},[516,517,518,521,523,525,527,529,531],"tr",{},[519,520],"th",{},[519,522],{},[519,524],{},[519,526],{},[519,528],{},[519,530],{},[519,532],{},[534,535,536,560],"tbody",{},[516,537,538,542,545,548,551,554,557],{},[539,540,541],"td",{},"Recommendation",[539,543,544],{},"Severity",[539,546,547],{},"Likelihood",[539,549,550],{},"Detectable",[539,552,553],{},"Repairable",[539,555,556],{},"Priority",[539,558,559],{},"Level",[516,561,562,565,568,571,574,576,582],{},[539,563,564],{},"SAD01-F",[539,566,567],{},"Low",[539,569,570],{},"Unlikely",[539,572,573],{},"Yes",[539,575,573],{},[539,577,578],{},[579,580,581],"strong",{},"P3",[539,583,584],{},[579,585,586],{},"L3",[588,589],"hr",{},[42,591,592,600,601,600,607],{},[593,594,596],"a",{"href":595},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002Fpre30-c",[597,598],"img",{"src":599},"attachments\u002F626524173\u002F638779571.png"," ",[593,602,604],{"href":603},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002F",[597,605],{"src":606},"attachments\u002F626524173\u002F638779572.png",[593,608,610],{"href":609},"\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp01-f",[597,611],{"src":612},"attachments\u002F626524173\u002F638779573.png",[70,614,616],{"id":615},"attachments","Attachments:",[618,619,623],"div",{"className":620,"align":622},[621],"greybox","left",[42,624,625,600,628,631,632,635,600,637,631,640,642,600,644,631],{},[597,626],{"alt":99,"src":627},"images\u002Ficons\u002Fbullet_blue.gif",[593,629,630],{"href":599},"button_arrow_left.png"," (image\u002Fpng)",[633,634],"br",{},[597,636],{"alt":99,"src":627},[593,638,639],{"href":606},"button_arrow_up.png",[633,641],{},[597,643],{"alt":99,"src":627},[593,645,646],{"href":612},"button_arrow_right.png",[648,649,650],"style",{},"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":99,"searchDepth":112,"depth":112,"links":652},[653,654,655,656,657,658],{"id":72,"depth":112,"text":73},{"id":206,"depth":112,"text":207},{"id":316,"depth":112,"text":73},{"id":411,"depth":112,"text":207},{"id":504,"depth":112,"text":505},{"id":615,"depth":112,"text":616},"md",{},"\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad\u002Flimit-the-scope-of-variables-and-procedures",{"title":33,"description":44},"9.sei-cert-fortran-coding-standard\u002F15.scope-association-and-definition-sad\u002F4.limit-the-scope-of-variables-and-procedures","yJuoI1fniQ9xXjWYrN0HswIPSqzXeJawKoiz-uWLeJQ",[666,670],{"title":667,"path":668,"stem":669,"children":-1},"SAD03-F. Replace common block with modules for safer data encapsulation","\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad\u002Fsad03-f","9.sei-cert-fortran-coding-standard\u002F15.scope-association-and-definition-sad\u002F3.sad03-f",{"title":671,"path":672,"stem":673,"children":-1},"Types (TYP)","\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F1.index",[675],{"title":676,"path":677,"stem":678,"children":679},"Sei Cert Fortran Coding Standard","\u002Fsei-cert-fortran-coding-standard","9.sei-cert-fortran-coding-standard",[680,683,705,719,745,755,759,769,773,777,781,785,803,821,825,837,855],{"title":681,"path":677,"stem":682},"SEI CERT Fortran Coding Standard","9.sei-cert-fortran-coding-standard\u002F1.index",{"title":684,"path":685,"stem":686,"children":687},"Arrays (ARR)","\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr","9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F1.index",[688,689,693,697,701],{"title":684,"path":685,"stem":686},{"title":690,"path":691,"stem":692},"ARR01-F. Do not use out-of-bounds arrays subscripts","\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr\u002Farr01-f","9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F2.arr01-f",{"title":694,"path":695,"stem":696},"ARR02-F. Declare array dummy arguments as assumed-shape","\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr\u002Farr02-f","9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F3.arr02-f",{"title":698,"path":699,"stem":700},"ARR03-F. Specify array bounds when copying data to device memory","\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr\u002Farr03-f","9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F4.arr03-f",{"title":702,"path":703,"stem":704},"ARR04-F. Ensure arrays ranges mapped to devices cover all accessed elements","\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr\u002Farr04-f","9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F5.arr04-f",{"title":706,"path":707,"stem":708,"children":709},"Attribute Declarations and Specifications (ADS)","\u002Fsei-cert-fortran-coding-standard\u002Fattribute-declarations-and-specifications-ads","9.sei-cert-fortran-coding-standard\u002F03.attribute-declarations-and-specifications-ads\u002F1.index",[710,711,715],{"title":706,"path":707,"stem":708},{"title":712,"path":713,"stem":714},"ADS01-F. Explicitly declare pure procedures","\u002Fsei-cert-fortran-coding-standard\u002Fattribute-declarations-and-specifications-ads\u002Fads01-f","9.sei-cert-fortran-coding-standard\u002F03.attribute-declarations-and-specifications-ads\u002F2.ads01-f",{"title":716,"path":717,"stem":718},"ADS02-F. Separate initialization from declaration to avoid implicit variable persistence","\u002Fsei-cert-fortran-coding-standard\u002Fattribute-declarations-and-specifications-ads\u002Fads02-f","9.sei-cert-fortran-coding-standard\u002F03.attribute-declarations-and-specifications-ads\u002F2.ads02-f",{"title":720,"path":721,"stem":722,"children":723},"Concurrency (CON)","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F1.index",[724,725,729,733,737,741],{"title":720,"path":721,"stem":722},{"title":726,"path":727,"stem":728},"CON01-F. Explicitly declare OpenMP data-sharing attributes for all variables","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con\u002Fcon01-f","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F2.con01-f",{"title":730,"path":731,"stem":732},"CON02-F. Protect reduction variables in multithreaded code","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con\u002Fcon02-f","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F3.con02-f",{"title":734,"path":735,"stem":736},"CON03-F. Protect multithreading recurrences to avoid data races","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con\u002Fcon03-f","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F4.con03-f",{"title":738,"path":739,"stem":740},"CON04-F. Do not use out-of-dimension subscripts in multithreaded code","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con\u002Fcon04-f","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F5.con04-f",{"title":742,"path":743,"stem":744},"CON05-F. Ensure correct OpenMP datascoping of variables in parallel regions","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con\u002Fcon05-f","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F6.con05-f",{"title":746,"path":747,"stem":748,"children":749},"Exceptions and IEEE Arithmetic (EIA)","\u002Fsei-cert-fortran-coding-standard\u002Fexceptions-and-ieee-arithmetic-eia","9.sei-cert-fortran-coding-standard\u002F05.exceptions-and-ieee-arithmetic-eia\u002F1.index",[750,751],{"title":746,"path":747,"stem":748},{"title":752,"path":753,"stem":754},"EIA01-F. Enforce evaluation order in floating-point expressions","\u002Fsei-cert-fortran-coding-standard\u002Fexceptions-and-ieee-arithmetic-eia\u002Feia01-f","9.sei-cert-fortran-coding-standard\u002F05.exceptions-and-ieee-arithmetic-eia\u002F2.eia01-f",{"title":756,"path":757,"stem":758},"Execution Control (EXC)","\u002Fsei-cert-fortran-coding-standard\u002Fexecution-control-exc","9.sei-cert-fortran-coding-standard\u002F06.execution-control-exc",{"title":760,"path":761,"stem":762,"children":763},"Expressions and Assignment (EXA)","\u002Fsei-cert-fortran-coding-standard\u002Fexpressions-and-assignment-exa","9.sei-cert-fortran-coding-standard\u002F07.expressions-and-assignment-exa\u002F1.index",[764,765],{"title":760,"path":761,"stem":762},{"title":766,"path":767,"stem":768},"EXA01-F. Do not read uninitialized memory","\u002Fsei-cert-fortran-coding-standard\u002Fexpressions-and-assignment-exa\u002Fexa01-f","9.sei-cert-fortran-coding-standard\u002F07.expressions-and-assignment-exa\u002F2.exa01-f",{"title":770,"path":771,"stem":772},"Input and Output Editing (IOE)","\u002Fsei-cert-fortran-coding-standard\u002Finput-and-output-editing-ioe","9.sei-cert-fortran-coding-standard\u002F08.input-and-output-editing-ioe",{"title":774,"path":775,"stem":776},"Input and Output Statements (IOS)","\u002Fsei-cert-fortran-coding-standard\u002Finput-and-output-statements-ios","9.sei-cert-fortran-coding-standard\u002F09.input-and-output-statements-ios",{"title":778,"path":779,"stem":780},"Interoperability with C (IWC)","\u002Fsei-cert-fortran-coding-standard\u002Finteroperability-with-c-iwc","9.sei-cert-fortran-coding-standard\u002F10.interoperability-with-c-iwc",{"title":782,"path":783,"stem":784},"Intrinsic Procedures and Modules (IPM)","\u002Fsei-cert-fortran-coding-standard\u002Fintrinsic-procedures-and-modules-ipm","9.sei-cert-fortran-coding-standard\u002F11.intrinsic-procedures-and-modules-ipm",{"title":786,"path":787,"stem":788,"children":789},"Miscellaneous (MSC)","\u002Fsei-cert-fortran-coding-standard\u002Fmiscellaneous-msc","9.sei-cert-fortran-coding-standard\u002F12.miscellaneous-msc\u002F1.index",[790,791,795,799],{"title":786,"path":787,"stem":788},{"title":792,"path":793,"stem":794},"MSC01-F. Avoid using legacy or obsolescent Fortran constructs","\u002Fsei-cert-fortran-coding-standard\u002Fmiscellaneous-msc\u002Fmsc01-f","9.sei-cert-fortran-coding-standard\u002F12.miscellaneous-msc\u002F2.msc01-f",{"title":796,"path":797,"stem":798},"MSC02-F. Beware of compiler-specific extensions","\u002Fsei-cert-fortran-coding-standard\u002Fmiscellaneous-msc\u002Fmsc02-f","9.sei-cert-fortran-coding-standard\u002F12.miscellaneous-msc\u002F3.msc02-f",{"title":800,"path":801,"stem":802},"MSC03-F. Do not depend on undefined behavior","\u002Fsei-cert-fortran-coding-standard\u002Fmiscellaneous-msc\u002Fmsc03-f","9.sei-cert-fortran-coding-standard\u002F12.miscellaneous-msc\u002F4.msc03-f",{"title":804,"path":805,"stem":806,"children":807},"Procedures (PRC)","\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc","9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F1.index",[808,809,813,817],{"title":804,"path":805,"stem":806},{"title":810,"path":811,"stem":812},"PRC01-F. Disable the implicit declaration of procedures","\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc\u002Fprc01-f","9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F2.prc01-f",{"title":814,"path":815,"stem":816},"PRC02-F. Avoid implicit interfaces by using module procedures","\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc\u002Fprc02-f","9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F3.prc02-f",{"title":818,"path":819,"stem":820},"PRC03-F. Declare the intent for all dummy arguments","\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc\u002Fprc03-f","9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F4.prc03-f",{"title":822,"path":823,"stem":824},"Program Units (PRU)","\u002Fsei-cert-fortran-coding-standard\u002Fprogram-units-pru","9.sei-cert-fortran-coding-standard\u002F14.program-units-pru",{"title":826,"path":827,"stem":828,"children":829},"Scope, Association, and Definition (SAD)","\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad","9.sei-cert-fortran-coding-standard\u002F15.scope-association-and-definition-sad\u002F1.index",[830,831,835,836],{"title":826,"path":827,"stem":828},{"title":832,"path":833,"stem":834},"SAD02-F. Minimize imported module entities using the ONLY clause","\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad\u002Fsad02-f","9.sei-cert-fortran-coding-standard\u002F15.scope-association-and-definition-sad\u002F2.sad02-f",{"title":667,"path":668,"stem":669},{"title":33,"path":661,"stem":663},{"title":671,"path":672,"stem":673,"children":838},[839,840,843,847,851],{"title":671,"path":672,"stem":673},{"title":841,"path":609,"stem":842},"TYP01-F. Use Intrinsic Assignment for Character Entities","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F2.typ01-f",{"title":844,"path":845,"stem":846},"TYP02-F. Prohibit implicit typing in all program units","\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp02-f","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F3.typ02-f",{"title":848,"path":849,"stem":850},"TYP03-F. Ensure intrinsic function arguments match intended precision","\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp03-f","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F4.typ03-f",{"title":852,"path":853,"stem":854},"TYP04-F. Centralize kind definitions to ensure consistent precision","\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp04-f","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F5.typ04-f",{"title":856,"path":857,"stem":858},"Acknowledgments","\u002Fsei-cert-fortran-coding-standard\u002Facknowledgements","9.sei-cert-fortran-coding-standard\u002Facknowledgements",1780320166962]