[{"data":1,"prerenderedAt":446},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-fortran-coding-standard":31,"surround-\u002Fsei-cert-fortran-coding-standard":254,"sidebar-sei-cert-fortran-coding-standard":263},[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":245,"meta":246,"navigation":7,"path":250,"seo":251,"stem":252,"__hash__":253},"content\u002F9.sei-cert-fortran-coding-standard\u002F1.index.md","SEI CERT Fortran Coding Standard",{"type":35,"value":36,"toc":237},"minimark",[37,41,45,50,53,64,68,162,166,174,185,189,197,201],[38,39,33],"h1",{"id":40},"sei-cert-fortran-coding-standard",[42,43,44],"p",{},"The Fortran rules and recommendations in this wiki are a work in progress and reflect the current thinking of the secure coding community. Because this is a development website, many pages are incomplete or contain errors. As rules and recommendations mature, they are published in report or book form as official releases. These releases are issued as dictated by the needs and interests of the secure software development community.",[46,47,49],"h2",{"id":48},"comments-and-contributing","Comments and Contributing",[42,51,52],{},"We provide access to the community members to contribute after subject matter expertise is verified.",[42,54,55,56,63],{},"For questions and comments about these standards, open a GitHub issue. For anything else, please ",[57,58,62],"a",{"href":59,"rel":60},"https:\u002F\u002Fwww.sei.cmu.edu\u002Fcontact-us\u002F",[61],"nofollow","submit feedback",".",[46,65,67],{"id":66},"rules-and-recommendations","Rules and Recommendations",[69,70,71,78,84,90,96,102,108,114,120,126,132,138,144,150,156],"ul",{},[72,73,74],"li",{},[57,75,77],{"href":76},"\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002F","01. Types (TYP)",[72,79,80],{},[57,81,83],{"href":82},"\u002Fsei-cert-fortran-coding-standard\u002Fattribute-declarations-and-specifications-ads\u002F","02. Attribute Declarations and Specifications (ADS)",[72,85,86],{},[57,87,89],{"href":88},"\u002Fsei-cert-fortran-coding-standard\u002Fexpressions-and-assignment-exa\u002F","03. Expressions and Assignment (EXA)",[72,91,92],{},[57,93,95],{"href":94},"\u002Fsei-cert-fortran-coding-standard\u002Fexecution-control-exc","04. Execution Control (EXC)",[72,97,98],{},[57,99,101],{"href":100},"\u002Fsei-cert-fortran-coding-standard\u002Finput-and-output-statements-ios","05. Input and Output Statements (IOS)",[72,103,104],{},[57,105,107],{"href":106},"\u002Fsei-cert-fortran-coding-standard\u002Finput-and-output-editing-ioe","06. Input and Output Editing (IOE)",[72,109,110],{},[57,111,113],{"href":112},"\u002Fsei-cert-fortran-coding-standard\u002Fprogram-units-pru","07. Program Units (PRU)",[72,115,116],{},[57,117,119],{"href":118},"\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc\u002F","08. Procedures (PRC)",[72,121,122],{},[57,123,125],{"href":124},"\u002Fsei-cert-fortran-coding-standard\u002Fintrinsic-procedures-and-modules-ipm","09. Intrinsic Procedures and Modules (IPM)",[72,127,128],{},[57,129,131],{"href":130},"\u002Fsei-cert-fortran-coding-standard\u002Fexceptions-and-ieee-arithmetic-eia\u002F","10. Exceptions and IEEE Arithmetic (EIA)",[72,133,134],{},[57,135,137],{"href":136},"\u002Fsei-cert-fortran-coding-standard\u002Finteroperability-with-c-iwc","11. Interoperability with C (IWC)",[72,139,140],{},[57,141,143],{"href":142},"\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad\u002F","12. Scope, Association, and Definition (SAD)",[72,145,146],{},[57,147,149],{"href":148},"\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con\u002F","13. Concurrency (CON)",[72,151,152],{},[57,153,155],{"href":154},"\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr\u002F","14. Arrays (ARR)",[72,157,158],{},[57,159,161],{"href":160},"\u002Fsei-cert-fortran-coding-standard\u002Fmiscellaneous-msc\u002F","15. Miscellaneous (MSC)",[46,163,165],{"id":164},"contact-us","Contact Us",[42,167,168,173],{},[57,169,172],{"href":170,"rel":171},"http:\u002F\u002Fwww.cert.org\u002Fsecure-coding\u002Fcontact.cfm",[61],"Contact us"," if you",[69,175,176,179,182],{},[72,177,178],{},"have questions about the Secure Coding wiki",[72,180,181],{},"have recommendations for standards in development",[72,183,184],{},"want to request privileges to participate in standards development",[46,186,188],{"id":187},"thank-you","Thank You!",[42,190,191,192,196],{},"We acknowledge the contributions of the following ",[57,193,195],{"href":194},"acknowledgements","folks",", and we look forward to seeing your name here as well.",[46,198,200],{"id":199},"attachments","Attachments:",[202,203,207],"div",{"className":204,"align":206},[205],"greybox","left",[42,208,209,214,215,219,220,223,214,225,219,229,231,214,233,219],{},[210,211],"img",{"alt":212,"src":213},"","images\u002Ficons\u002Fbullet_blue.gif"," ",[57,216,218],{"href":217},"attachments\u002F88487235\u002F88487243.png","button_arrow_right.png"," (image\u002Fpng)",[221,222],"br",{},[210,224],{"alt":212,"src":213},[57,226,228],{"href":227},"attachments\u002F88487235\u002F88487244.png","button_arrow_left.png",[221,230],{},[210,232],{"alt":212,"src":213},[57,234,236],{"href":235},"attachments\u002F88487235\u002F88487245.png","button_arrow_up.png",{"title":212,"searchDepth":238,"depth":238,"links":239},2,[240,241,242,243,244],{"id":48,"depth":238,"text":49},{"id":66,"depth":238,"text":67},{"id":164,"depth":238,"text":165},{"id":187,"depth":238,"text":188},{"id":199,"depth":238,"text":200},"md",{"tags":247},[248,249],"wikimain","ear","\u002Fsei-cert-fortran-coding-standard",{"title":33,"description":44},"9.sei-cert-fortran-coding-standard\u002F1.index","4JmW1fu_uoHh5pLIq90dQEGOFnwqMToztXIQ6p1G3HQ",[255,259],{"title":256,"path":257,"stem":258,"children":-1},"Coding Style Guidelines","\u002Fdevelopment-guidelines\u002Fcoding-style-guidelines","8.development-guidelines\u002F01.coding-style-guidelines",{"title":260,"path":261,"stem":262,"children":-1},"Arrays (ARR)","\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr","9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F1.index",[264],{"title":265,"path":250,"stem":266,"children":267,"page":-1},"Sei Cert Fortran Coding Standard","9.sei-cert-fortran-coding-standard",[268,269,288,302,328,338,341,351,354,357,360,363,381,399,402,420,442],{"title":33,"path":250,"stem":252},{"title":260,"path":261,"stem":262,"children":270},[271,272,276,280,284],{"title":260,"path":261,"stem":262},{"title":273,"path":274,"stem":275},"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":277,"path":278,"stem":279},"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":281,"path":282,"stem":283},"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":285,"path":286,"stem":287},"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":289,"path":290,"stem":291,"children":292},"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",[293,294,298],{"title":289,"path":290,"stem":291},{"title":295,"path":296,"stem":297},"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":299,"path":300,"stem":301},"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":303,"path":304,"stem":305,"children":306},"Concurrency (CON)","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F1.index",[307,308,312,316,320,324],{"title":303,"path":304,"stem":305},{"title":309,"path":310,"stem":311},"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":313,"path":314,"stem":315},"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":317,"path":318,"stem":319},"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":321,"path":322,"stem":323},"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":325,"path":326,"stem":327},"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":329,"path":330,"stem":331,"children":332},"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",[333,334],{"title":329,"path":330,"stem":331},{"title":335,"path":336,"stem":337},"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":339,"path":94,"stem":340},"Execution Control (EXC)","9.sei-cert-fortran-coding-standard\u002F06.execution-control-exc",{"title":342,"path":343,"stem":344,"children":345},"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",[346,347],{"title":342,"path":343,"stem":344},{"title":348,"path":349,"stem":350},"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":352,"path":106,"stem":353},"Input and Output Editing (IOE)","9.sei-cert-fortran-coding-standard\u002F08.input-and-output-editing-ioe",{"title":355,"path":100,"stem":356},"Input and Output Statements (IOS)","9.sei-cert-fortran-coding-standard\u002F09.input-and-output-statements-ios",{"title":358,"path":136,"stem":359},"Interoperability with C (IWC)","9.sei-cert-fortran-coding-standard\u002F10.interoperability-with-c-iwc",{"title":361,"path":124,"stem":362},"Intrinsic Procedures and Modules (IPM)","9.sei-cert-fortran-coding-standard\u002F11.intrinsic-procedures-and-modules-ipm",{"title":364,"path":365,"stem":366,"children":367},"Miscellaneous (MSC)","\u002Fsei-cert-fortran-coding-standard\u002Fmiscellaneous-msc","9.sei-cert-fortran-coding-standard\u002F12.miscellaneous-msc\u002F1.index",[368,369,373,377],{"title":364,"path":365,"stem":366},{"title":370,"path":371,"stem":372},"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":374,"path":375,"stem":376},"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":378,"path":379,"stem":380},"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":382,"path":383,"stem":384,"children":385},"Procedures (PRC)","\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc","9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F1.index",[386,387,391,395],{"title":382,"path":383,"stem":384},{"title":388,"path":389,"stem":390},"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":392,"path":393,"stem":394},"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":396,"path":397,"stem":398},"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":400,"path":112,"stem":401},"Program Units (PRU)","9.sei-cert-fortran-coding-standard\u002F14.program-units-pru",{"title":403,"path":404,"stem":405,"children":406},"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",[407,408,412,416],{"title":403,"path":404,"stem":405},{"title":409,"path":410,"stem":411},"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":413,"path":414,"stem":415},"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":417,"path":418,"stem":419},"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":421,"path":422,"stem":423,"children":424},"Types (TYP)","\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F1.index",[425,426,430,434,438],{"title":421,"path":422,"stem":423},{"title":427,"path":428,"stem":429},"TYP01-F. Use Intrinsic Assignment for Character Entities","\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp01-f","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F2.typ01-f",{"title":431,"path":432,"stem":433},"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":435,"path":436,"stem":437},"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":439,"path":440,"stem":441},"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":443,"path":444,"stem":445},"Acknowledgments","\u002Fsei-cert-fortran-coding-standard\u002Facknowledgements","9.sei-cert-fortran-coding-standard\u002Facknowledgements",1780320138121]