[{"data":1,"prerenderedAt":688},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc\u002Fprc01-f":31,"surround-\u002Fsei-cert-fortran-coding-standard\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\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\u002Fprocedures-prc\u002Fprc01-f",{"title":33,"description":487},"9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F2.prc01-f","5cmTOXHc-4w96oyTQVNzX-AadzKZei9siM5D195pafw",[495,499],{"title":496,"path":497,"stem":498,"children":-1},"Procedures (PRC)","\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc","9.sei-cert-fortran-coding-standard\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\u002Fprocedures-prc\u002Fprc02-f","9.sei-cert-fortran-coding-standard\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",[509,512,534,548,574,584,588,598,602,606,610,614,632,641,645,663,684],{"title":510,"path":506,"stem":511},"SEI CERT Fortran Coding Standard","9.sei-cert-fortran-coding-standard\u002F1.index",{"title":513,"path":514,"stem":515,"children":516},"Arrays (ARR)","\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr","9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F1.index",[517,518,522,526,530],{"title":513,"path":514,"stem":515},{"title":519,"path":520,"stem":521},"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":523,"path":524,"stem":525},"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":527,"path":528,"stem":529},"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":531,"path":532,"stem":533},"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":535,"path":536,"stem":537,"children":538},"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",[539,540,544],{"title":535,"path":536,"stem":537},{"title":541,"path":542,"stem":543},"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":545,"path":546,"stem":547},"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":549,"path":550,"stem":551,"children":552},"Concurrency (CON)","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F1.index",[553,554,558,562,566,570],{"title":549,"path":550,"stem":551},{"title":555,"path":556,"stem":557},"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":559,"path":560,"stem":561},"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":563,"path":564,"stem":565},"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":567,"path":568,"stem":569},"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":571,"path":572,"stem":573},"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":575,"path":576,"stem":577,"children":578},"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",[579,580],{"title":575,"path":576,"stem":577},{"title":581,"path":582,"stem":583},"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":585,"path":586,"stem":587},"Execution Control (EXC)","\u002Fsei-cert-fortran-coding-standard\u002Fexecution-control-exc","9.sei-cert-fortran-coding-standard\u002F06.execution-control-exc",{"title":589,"path":590,"stem":591,"children":592},"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",[593,594],{"title":589,"path":590,"stem":591},{"title":595,"path":596,"stem":597},"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":599,"path":600,"stem":601},"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":603,"path":604,"stem":605},"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":607,"path":608,"stem":609},"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":611,"path":612,"stem":613},"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":615,"path":616,"stem":617,"children":618},"Miscellaneous (MSC)","\u002Fsei-cert-fortran-coding-standard\u002Fmiscellaneous-msc","9.sei-cert-fortran-coding-standard\u002F12.miscellaneous-msc\u002F1.index",[619,620,624,628],{"title":615,"path":616,"stem":617},{"title":621,"path":622,"stem":623},"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":625,"path":626,"stem":627},"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":629,"path":630,"stem":631},"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":496,"path":497,"stem":498,"children":633},[634,635,636,637],{"title":496,"path":497,"stem":498},{"title":33,"path":490,"stem":492},{"title":500,"path":501,"stem":502},{"title":638,"path":639,"stem":640},"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":642,"path":643,"stem":644},"Program Units (PRU)","\u002Fsei-cert-fortran-coding-standard\u002Fprogram-units-pru","9.sei-cert-fortran-coding-standard\u002F14.program-units-pru",{"title":646,"path":647,"stem":648,"children":649},"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",[650,651,655,659],{"title":646,"path":647,"stem":648},{"title":652,"path":653,"stem":654},"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":656,"path":657,"stem":658},"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":660,"path":661,"stem":662},"Limit the scope of variables and procedures","\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad\u002Flimit-the-scope-of-variables-and-procedures","9.sei-cert-fortran-coding-standard\u002F15.scope-association-and-definition-sad\u002F4.limit-the-scope-of-variables-and-procedures",{"title":664,"path":665,"stem":666,"children":667},"Types (TYP)","\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F1.index",[668,669,672,676,680],{"title":664,"path":665,"stem":666},{"title":670,"path":439,"stem":671},"TYP01-F. Use Intrinsic Assignment for Character Entities","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F2.typ01-f",{"title":673,"path":674,"stem":675},"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":677,"path":678,"stem":679},"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":681,"path":682,"stem":683},"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":685,"path":686,"stem":687},"Acknowledgments","\u002Fsei-cert-fortran-coding-standard\u002Facknowledgements","9.sei-cert-fortran-coding-standard\u002Facknowledgements",1780320167742]