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