[{"data":1,"prerenderedAt":479},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad":31,"surround-\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad":290,"sidebar-sei-cert-fortran-coding-standard":297},[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":257,"extension":284,"meta":285,"navigation":7,"path":286,"seo":287,"stem":288,"__hash__":289},"content\u002F9.sei-cert-fortran-coding-standard\u002F15.scope-association-and-definition-sad\u002F1.index.md","Scope, Association, and Definition (SAD)",{"type":35,"value":36,"toc":277},"minimark",[37,41,46,69,87,91,214,218,221,243,247],[38,39,33],"h1",{"id":40},"scope-association-and-definition-sad",[42,43,45],"h2",{"id":44},"guidelines","Guidelines",[47,48,49,57,63],"ul",{},[50,51,52],"li",{},[53,54,56],"a",{"href":55},"\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad\u002Flimit-the-scope-of-variables-and-procedures","SAD01-F: Limit the scope of variables and procedures",[50,58,59],{},[53,60,62],{"href":61},"\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad\u002Fsad02-f","SAD02-F. Minimize imported module entities using the ONLY clause",[50,64,65],{},[53,66,68],{"href":67},"\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad\u002Fsad03-f","SAD03-F. Replace common block with modules for safer data encapsulation",[70,71,72,76,79,80,86],"p",{},[73,74,75],"strong",{},"Information for Editors",[77,78],"br",{},"\nTo have a new guideline automatically listed above be sure to label it ",[53,81,85],{"href":82,"rel":83},"https:\u002F\u002Fwiki.sei.cmu.edu\u002F\u002Fconfluence\u002Flabel\u002Ffortran\u002Fsad",[84],"nofollow","sad"," .",[42,88,90],{"id":89},"risk-assessment-summary","Risk Assessment Summary",[92,93,94,115],"table",{},[95,96,97],"thead",{},[98,99,100,103,105,107,109,111,113],"tr",{},[101,102],"th",{},[101,104],{},[101,106],{},[101,108],{},[101,110],{},[101,112],{},[101,114],{},[116,117,118,142,168,192],"tbody",{},[98,119,120,124,127,130,133,136,139],{},[121,122,123],"td",{},"Rule",[121,125,126],{},"Severity",[121,128,129],{},"Likelihood",[121,131,132],{},"Detectable",[121,134,135],{},"Repairable",[121,137,138],{},"Priority",[121,140,141],{},"Level",[98,143,144,147,150,153,156,158,163],{},[121,145,146],{},"SAD01-F",[121,148,149],{},"Low",[121,151,152],{},"Unlikely",[121,154,155],{},"Yes",[121,157,155],{},[121,159,160],{},[73,161,162],{},"P3",[121,164,165],{},[73,166,167],{},"L3",[98,169,170,173,176,178,180,182,187],{},[121,171,172],{},"SAD02-F",[121,174,175],{},"High",[121,177,152],{},[121,179,155],{},[121,181,155],{},[121,183,184],{},[73,185,186],{},"P9",[121,188,189],{},[73,190,191],{},"L2",[98,193,194,196,198,200,202,205,210],{},[121,195,172],{},[121,197,175],{},[121,199,152],{},[121,201,155],{},[121,203,204],{},"No",[121,206,207],{},[73,208,209],{},"P6",[121,211,212],{},[73,213,191],{},[42,215,217],{"id":216},"related-rules-and-recommendations","Related Rules and Recommendations",[219,220],"hr",{},[70,222,223,230,231,230,237],{},[53,224,226],{"href":225},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002Fpre30-c",[227,228],"img",{"src":229},"attachments\u002F88487240\u002F638779567.png"," ",[53,232,234],{"href":233},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002F",[227,235],{"src":236},"attachments\u002F88487240\u002F638779568.png",[53,238,240],{"href":239},"\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp01-f",[227,241],{"src":242},"attachments\u002F88487240\u002F638779569.png",[42,244,246],{"id":245},"attachments","Attachments:",[248,249,253],"div",{"className":250,"align":252},[251],"greybox","left",[70,254,255,230,259,262,263,265,230,267,262,270,272,230,274,262],{},[227,256],{"alt":257,"src":258},"","images\u002Ficons\u002Fbullet_blue.gif",[53,260,261],{"href":229},"button_arrow_left.png"," (image\u002Fpng)",[77,264],{},[227,266],{"alt":257,"src":258},[53,268,269],{"href":236},"button_arrow_up.png",[77,271],{},[227,273],{"alt":257,"src":258},[53,275,276],{"href":242},"button_arrow_right.png",{"title":257,"searchDepth":278,"depth":278,"links":279},2,[280,281,282,283],{"id":44,"depth":278,"text":45},{"id":89,"depth":278,"text":90},{"id":216,"depth":278,"text":217},{"id":245,"depth":278,"text":246},"md",{},"\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad",{"title":33,"description":257},"9.sei-cert-fortran-coding-standard\u002F15.scope-association-and-definition-sad\u002F1.index","Ogr_OVuXeNBEoAGiD5dovXrjHTBy2rt-cCivnyJYeus",[291,295],{"title":292,"path":293,"stem":294,"children":-1},"Program Units (PRU)","\u002Fsei-cert-fortran-coding-standard\u002Fprogram-units-pru","9.sei-cert-fortran-coding-standard\u002F14.program-units-pru",{"title":62,"path":61,"stem":296,"children":-1},"9.sei-cert-fortran-coding-standard\u002F15.scope-association-and-definition-sad\u002F2.sad02-f",[298],{"title":299,"path":300,"stem":301,"children":302},"Sei Cert Fortran Coding Standard","\u002Fsei-cert-fortran-coding-standard","9.sei-cert-fortran-coding-standard",[303,306,328,342,368,378,382,392,396,400,404,408,426,444,445,454,475],{"title":304,"path":300,"stem":305},"SEI CERT Fortran Coding Standard","9.sei-cert-fortran-coding-standard\u002F1.index",{"title":307,"path":308,"stem":309,"children":310},"Arrays (ARR)","\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr","9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F1.index",[311,312,316,320,324],{"title":307,"path":308,"stem":309},{"title":313,"path":314,"stem":315},"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":317,"path":318,"stem":319},"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":321,"path":322,"stem":323},"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":325,"path":326,"stem":327},"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":329,"path":330,"stem":331,"children":332},"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",[333,334,338],{"title":329,"path":330,"stem":331},{"title":335,"path":336,"stem":337},"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":339,"path":340,"stem":341},"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":343,"path":344,"stem":345,"children":346},"Concurrency (CON)","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F1.index",[347,348,352,356,360,364],{"title":343,"path":344,"stem":345},{"title":349,"path":350,"stem":351},"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":353,"path":354,"stem":355},"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":357,"path":358,"stem":359},"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":361,"path":362,"stem":363},"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":365,"path":366,"stem":367},"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":369,"path":370,"stem":371,"children":372},"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",[373,374],{"title":369,"path":370,"stem":371},{"title":375,"path":376,"stem":377},"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":379,"path":380,"stem":381},"Execution Control (EXC)","\u002Fsei-cert-fortran-coding-standard\u002Fexecution-control-exc","9.sei-cert-fortran-coding-standard\u002F06.execution-control-exc",{"title":383,"path":384,"stem":385,"children":386},"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",[387,388],{"title":383,"path":384,"stem":385},{"title":389,"path":390,"stem":391},"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":393,"path":394,"stem":395},"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":397,"path":398,"stem":399},"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":401,"path":402,"stem":403},"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":405,"path":406,"stem":407},"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":409,"path":410,"stem":411,"children":412},"Miscellaneous (MSC)","\u002Fsei-cert-fortran-coding-standard\u002Fmiscellaneous-msc","9.sei-cert-fortran-coding-standard\u002F12.miscellaneous-msc\u002F1.index",[413,414,418,422],{"title":409,"path":410,"stem":411},{"title":415,"path":416,"stem":417},"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":419,"path":420,"stem":421},"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":423,"path":424,"stem":425},"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":427,"path":428,"stem":429,"children":430},"Procedures (PRC)","\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc","9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F1.index",[431,432,436,440],{"title":427,"path":428,"stem":429},{"title":433,"path":434,"stem":435},"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":437,"path":438,"stem":439},"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":441,"path":442,"stem":443},"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":292,"path":293,"stem":294},{"title":33,"path":286,"stem":288,"children":446},[447,448,449,451],{"title":33,"path":286,"stem":288},{"title":62,"path":61,"stem":296},{"title":68,"path":67,"stem":450},"9.sei-cert-fortran-coding-standard\u002F15.scope-association-and-definition-sad\u002F3.sad03-f",{"title":452,"path":55,"stem":453},"Limit 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":455,"path":456,"stem":457,"children":458},"Types (TYP)","\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F1.index",[459,460,463,467,471],{"title":455,"path":456,"stem":457},{"title":461,"path":239,"stem":462},"TYP01-F. Use Intrinsic Assignment for Character Entities","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F2.typ01-f",{"title":464,"path":465,"stem":466},"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":468,"path":469,"stem":470},"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":472,"path":473,"stem":474},"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":476,"path":477,"stem":478},"Acknowledgments","\u002Fsei-cert-fortran-coding-standard\u002Facknowledgements","9.sei-cert-fortran-coding-standard\u002Facknowledgements",1780320139761]