[{"data":1,"prerenderedAt":681},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fprocedures-prc\u002Fprc01-f":31,"surround-\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fprocedures-prc\u002Fprc01-f":494,"sidebar-sei-cert-fortran-coding-standard":503},[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":487,"extension":488,"meta":489,"navigation":7,"path":490,"seo":491,"stem":492,"__hash__":493},"content\u002F9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F13.procedures-prc\u002F2.prc01-f.md","PRC01-F. Disable the implicit declaration of procedures",{"type":35,"value":36,"toc":481},"minimark",[37,41,54,62,72,77,101,210,214,228,332,336,339,417,420,443,447,477],[38,39,33],"h1",{"id":40},"prc01-f-disable-the-implicit-declaration-of-procedures",[42,43,44,45,49,50,53],"p",{},"Program units should explicitly disable the implicit declaration of procedures using ",[46,47,48],"code",{},"  implicit none(external) "," (or the stricter ",[46,51,52],{},"  implicit  none(type, external) "," ), or by ensuring all referenced procedures have explicit interfaces.",[42,55,56,57,61],{},"In Fortran, a procedure called without an explicit interface is treated as having an ",[58,59,60],"strong",{},"implicit interface"," . The compiler makes assumptions about the characteristics of arguments (types, ranks, etc.) and function return types. This prevents compile-time verification that the actual arguments match the dummy arguments, potentially causing undefined behavior at runtime if mismatches occur.",[42,63,64,65,67,68,71],{},"The Fortran 2018 standard introduced ",[46,66,48],{}," , which enforces that every external and dummy procedure in the scoping unit must either have an explicit interface or be explicitly declared with the ",[46,69,70],{},"external"," attribute.",[73,74,76],"h2",{"id":75},"noncompliant-code-example","Noncompliant Code Example",[42,78,79,80,83,84,86,87,89,90,92,93,96,97,100],{},"In this noncompliant example, ",[46,81,82],{},"factorial"," is compiled separately. The main program does not have an explicit interface for ",[46,85,82],{}," . Because ",[46,88,48],{}," is omitted, the compiler assumes ",[46,91,82],{}," is a valid external procedure with an implicit interface. Passing a ",[46,94,95],{},"REAL"," variable to a subroutine expecting an ",[46,98,99],{},"integer"," leads to undefined behavior at runtime.",[102,103,105],"code-block",{"quality":104},"bad",[106,107,112],"pre",{"className":108,"code":109,"language":110,"meta":111,"style":111},"language-fortran shiki shiki-themes github-light-high-contrast github-dark-high-contrast monokai","! external procedure defined elsewhere\nsubroutine factorial(n, res)\n    implicit none\n    integer, intent(in)  :: n\n    integer, intent(out) :: res\n    !... code implementation here ...\nend subroutine factorial\n\nprogram math_test\n    implicit none\n    integer :: n = 5\n    real    :: r ! Mismatch: 'r' is REAL, but 'factorial' expects integer\n\n    ! Noncompliant: Implicit declaration of procedure 'factorial'\n    call factorial(n, r)\nend program math_test \n","fortran","",[46,113,114,122,128,134,140,146,152,158,164,170,175,181,187,192,198,204],{"__ignoreMap":111},[115,116,119],"span",{"class":117,"line":118},"line",1,[115,120,121],{},"! external procedure defined elsewhere\n",[115,123,125],{"class":117,"line":124},2,[115,126,127],{},"subroutine factorial(n, res)\n",[115,129,131],{"class":117,"line":130},3,[115,132,133],{},"    implicit none\n",[115,135,137],{"class":117,"line":136},4,[115,138,139],{},"    integer, intent(in)  :: n\n",[115,141,143],{"class":117,"line":142},5,[115,144,145],{},"    integer, intent(out) :: res\n",[115,147,149],{"class":117,"line":148},6,[115,150,151],{},"    !... code implementation here ...\n",[115,153,155],{"class":117,"line":154},7,[115,156,157],{},"end subroutine factorial\n",[115,159,161],{"class":117,"line":160},8,[115,162,163],{"emptyLinePlaceholder":7},"\n",[115,165,167],{"class":117,"line":166},9,[115,168,169],{},"program math_test\n",[115,171,173],{"class":117,"line":172},10,[115,174,133],{},[115,176,178],{"class":117,"line":177},11,[115,179,180],{},"    integer :: n = 5\n",[115,182,184],{"class":117,"line":183},12,[115,185,186],{},"    real    :: r ! Mismatch: 'r' is REAL, but 'factorial' expects integer\n",[115,188,190],{"class":117,"line":189},13,[115,191,163],{"emptyLinePlaceholder":7},[115,193,195],{"class":117,"line":194},14,[115,196,197],{},"    ! Noncompliant: Implicit declaration of procedure 'factorial'\n",[115,199,201],{"class":117,"line":200},15,[115,202,203],{},"    call factorial(n, r)\n",[115,205,207],{"class":117,"line":206},16,[115,208,209],{},"end program math_test\n",[73,211,213],{"id":212},"compliant-solution","Compliant Solution",[42,215,216,217,220,221,223,224,227],{},"The compliant solution uses implicit ",[46,218,219],{},"  none(type, external) "," . While ",[46,222,48],{}," is sufficient to prevent implicit procedure interfaces, including ",[46,225,226],{},"type"," is recommended to also disable implicit typing of variables, providing stricter compile-time checking.",[102,229,231],{"quality":230},"good",[106,232,234],{"className":108,"code":233,"language":110,"meta":111,"style":111},"! external procedure defined elsewhere\nmodule math_mod\n    implicit none\ncontains\n    subroutine factorial(n, res)\n        integer, intent(in)  :: n\n        integer, intent(out) :: res\n        !... code implementation here ...\n    end subroutine factorial\nend module math_mod\n\nprogram math_test\n    use math_mod, only: factorial\n    ! Compliant: Requires all procedures to have explicit interfaces\n    implicit none (type, external)\n    integer :: n = 5\n    integer :: r ! Correct type\n\n    call factorial(n, r)\nend program math_test \n",[46,235,236,240,245,249,254,259,264,269,274,279,284,288,292,297,302,307,311,317,322,327],{"__ignoreMap":111},[115,237,238],{"class":117,"line":118},[115,239,121],{},[115,241,242],{"class":117,"line":124},[115,243,244],{},"module math_mod\n",[115,246,247],{"class":117,"line":130},[115,248,133],{},[115,250,251],{"class":117,"line":136},[115,252,253],{},"contains\n",[115,255,256],{"class":117,"line":142},[115,257,258],{},"    subroutine factorial(n, res)\n",[115,260,261],{"class":117,"line":148},[115,262,263],{},"        integer, intent(in)  :: n\n",[115,265,266],{"class":117,"line":154},[115,267,268],{},"        integer, intent(out) :: res\n",[115,270,271],{"class":117,"line":160},[115,272,273],{},"        !... code implementation here ...\n",[115,275,276],{"class":117,"line":166},[115,277,278],{},"    end subroutine factorial\n",[115,280,281],{"class":117,"line":172},[115,282,283],{},"end module math_mod\n",[115,285,286],{"class":117,"line":177},[115,287,163],{"emptyLinePlaceholder":7},[115,289,290],{"class":117,"line":183},[115,291,169],{},[115,293,294],{"class":117,"line":189},[115,295,296],{},"    use math_mod, only: factorial\n",[115,298,299],{"class":117,"line":194},[115,300,301],{},"    ! Compliant: Requires all procedures to have explicit interfaces\n",[115,303,304],{"class":117,"line":200},[115,305,306],{},"    implicit none (type, external)\n",[115,308,309],{"class":117,"line":206},[115,310,180],{},[115,312,314],{"class":117,"line":313},17,[115,315,316],{},"    integer :: r ! Correct type\n",[115,318,320],{"class":117,"line":319},18,[115,321,163],{"emptyLinePlaceholder":7},[115,323,325],{"class":117,"line":324},19,[115,326,203],{},[115,328,330],{"class":117,"line":329},20,[115,331,209],{},[73,333,335],{"id":334},"risk-assessment","Risk Assessment",[42,337,338],{},"Implicit procedure declarations disable compile-time argument checking. This significantly increases the risk of passing arguments with the wrong type, rank, or number, resulting in undefined behavior that may go undetected until runtime.",[340,341,342,363],"table",{},[343,344,345],"thead",{},[346,347,348,351,353,355,357,359,361],"tr",{},[349,350],"th",{},[349,352],{},[349,354],{},[349,356],{},[349,358],{},[349,360],{},[349,362],{},[364,365,366,390],"tbody",{},[346,367,368,372,375,378,381,384,387],{},[369,370,371],"td",{},"Recommendation",[369,373,374],{},"Severity",[369,376,377],{},"Likelihood",[369,379,380],{},"Detectable",[369,382,383],{},"Repairable",[369,385,386],{},"Priority",[369,388,389],{},"Level",[346,391,392,395,398,401,404,407,412],{},[369,393,394],{},"PRC01-F",[369,396,397],{},"High",[369,399,400],{},"Likely",[369,402,403],{},"Yes",[369,405,406],{},"No",[369,408,409],{},[58,410,411],{},"P18",[369,413,414],{},[58,415,416],{},"L1",[418,419],"hr",{},[42,421,422,430,431,430,437],{},[423,424,426],"a",{"href":425},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002Fpre30-c",[427,428],"img",{"src":429},"attachments\u002F629047308\u002F638779543.png"," ",[423,432,434],{"href":433},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002F",[427,435],{"src":436},"attachments\u002F629047308\u002F638779544.png",[423,438,440],{"href":439},"\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp01-f",[427,441],{"src":442},"attachments\u002F629047308\u002F638779545.png",[73,444,446],{"id":445},"attachments","Attachments:",[448,449,453],"div",{"className":450,"align":452},[451],"greybox","left",[42,454,455,430,458,461,462,465,430,467,461,470,472,430,474,461],{},[427,456],{"alt":111,"src":457},"images\u002Ficons\u002Fbullet_blue.gif",[423,459,460],{"href":429},"button_arrow_left.png"," (image\u002Fpng)",[463,464],"br",{},[427,466],{"alt":111,"src":457},[423,468,469],{"href":436},"button_arrow_up.png",[463,471],{},[427,473],{"alt":111,"src":457},[423,475,476],{"href":442},"button_arrow_right.png",[478,479,480],"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":111,"searchDepth":124,"depth":124,"links":482},[483,484,485,486],{"id":75,"depth":124,"text":76},{"id":212,"depth":124,"text":213},{"id":334,"depth":124,"text":335},{"id":445,"depth":124,"text":446},"Program units should explicitly disable the implicit declaration of procedures using   implicit none(external)  (or the stricter   implicit  none(type, external)  ), or by ensuring all referenced procedures have explicit interfaces.","md",{},"\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fprocedures-prc\u002Fprc01-f",{"title":33,"description":487},"9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F13.procedures-prc\u002F2.prc01-f","zpPct6m-w-mH5asIB5QThc1GIHyCh1wDExh2KJHGIMg",[495,499],{"title":496,"path":497,"stem":498,"children":-1},"Procedures (PRC)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fprocedures-prc","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F13.procedures-prc\u002F1.index",{"title":500,"path":501,"stem":502,"children":-1},"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",[504],{"title":505,"path":506,"stem":507,"children":508},"SEI CERT Fortran Coding Standard","\u002Fsei-cert-fortran-coding-standard","9.sei-cert-fortran-coding-standard\u002F01.index",[509,510,522,677],{"title":505,"path":506,"stem":507},{"title":511,"path":512,"stem":513,"children":514},"Front Matter","\u002Fsei-cert-fortran-coding-standard\u002Ffront-matter","9.sei-cert-fortran-coding-standard\u002F02.front-matter\u002F1.index",[515,516],{"title":511,"path":512,"stem":513},{"title":517,"path":518,"stem":519,"children":520},"Introduction","\u002Fsei-cert-fortran-coding-standard\u002Ffront-matter\u002Fintroduction","9.sei-cert-fortran-coding-standard\u002F02.front-matter\u002F2.introduction\u002F01.index",[521],{"title":517,"path":518,"stem":519},{"title":523,"path":524,"stem":525,"children":526},"Guidelines","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F01.index",[527,528,550,564,590,600,610,628,637,655],{"title":523,"path":524,"stem":525},{"title":529,"path":530,"stem":531,"children":532},"Arrays (ARR)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Farrays-arr","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F02.arrays-arr\u002F1.index",[533,534,538,542,546],{"title":529,"path":530,"stem":531},{"title":535,"path":536,"stem":537},"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":539,"path":540,"stem":541},"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":543,"path":544,"stem":545},"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":547,"path":548,"stem":549},"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":551,"path":552,"stem":553,"children":554},"Attribute Declarations and Specifications (ADS)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fattribute-declarations-and-specifications-ads","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.attribute-declarations-and-specifications-ads\u002F1.index",[555,556,560],{"title":551,"path":552,"stem":553},{"title":557,"path":558,"stem":559},"ADS01-F. Explicitly declare pure procedures","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fattribute-declarations-and-specifications-ads\u002Fads01-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.attribute-declarations-and-specifications-ads\u002F2.ads01-f",{"title":561,"path":562,"stem":563},"ADS02-F. Separate initialization from declaration to avoid implicit variable persistence","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fattribute-declarations-and-specifications-ads\u002Fads02-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.attribute-declarations-and-specifications-ads\u002F2.ads02-f",{"title":565,"path":566,"stem":567,"children":568},"Concurrency (CON)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fconcurrency-con","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F1.index",[569,570,574,578,582,586],{"title":565,"path":566,"stem":567},{"title":571,"path":572,"stem":573},"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":575,"path":576,"stem":577},"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":579,"path":580,"stem":581},"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":583,"path":584,"stem":585},"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":587,"path":588,"stem":589},"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":591,"path":592,"stem":593,"children":594},"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",[595,596],{"title":591,"path":592,"stem":593},{"title":597,"path":598,"stem":599},"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":601,"path":602,"stem":603,"children":604},"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",[605,606],{"title":601,"path":602,"stem":603},{"title":607,"path":608,"stem":609},"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":611,"path":612,"stem":613,"children":614},"Miscellaneous (MSC)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fmiscellaneous-msc","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F12.miscellaneous-msc\u002F1.index",[615,616,620,624],{"title":611,"path":612,"stem":613},{"title":617,"path":618,"stem":619},"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",{"title":621,"path":622,"stem":623},"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":625,"path":626,"stem":627},"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":496,"path":497,"stem":498,"children":629},[630,631,632,633],{"title":496,"path":497,"stem":498},{"title":33,"path":490,"stem":492},{"title":500,"path":501,"stem":502},{"title":634,"path":635,"stem":636},"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":638,"path":639,"stem":640,"children":641},"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",[642,643,647,651],{"title":638,"path":639,"stem":640},{"title":644,"path":645,"stem":646},"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":648,"path":649,"stem":650},"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":652,"path":653,"stem":654},"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":656,"path":657,"stem":658,"children":659},"Types (TYP)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Ftypes-typ","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F16.types-typ\u002F1.index",[660,661,665,669,673],{"title":656,"path":657,"stem":658},{"title":662,"path":663,"stem":664},"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":666,"path":667,"stem":668},"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":670,"path":671,"stem":672},"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":674,"path":675,"stem":676},"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":678,"path":679,"stem":680},"Acknowledgments","\u002Fsei-cert-fortran-coding-standard\u002Facknowledgements","9.sei-cert-fortran-coding-standard\u002Facknowledgements",1783713877044]