[{"data":1,"prerenderedAt":480},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc":31,"surround-\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc":292,"sidebar-sei-cert-fortran-coding-standard":299},[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":259,"extension":286,"meta":287,"navigation":7,"path":288,"seo":289,"stem":290,"__hash__":291},"content\u002F9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F1.index.md","Procedures (PRC)",{"type":35,"value":36,"toc":279},"minimark",[37,41,46,69,87,91,216,220,223,245,249],[38,39,33],"h1",{"id":40},"procedures-prc",[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\u002Fprocedures-prc\u002Fprc01-f","PRC01-F. Disable the implicit declaration of procedures",[50,58,59],{},[53,60,62],{"href":61},"\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc\u002Fprc02-f","PRC02-F. Avoid implicit interfaces by using module procedures",[50,64,65],{},[53,66,68],{"href":67},"\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc\u002Fprc03-f","PRC03-F. Declare the intent for all dummy arguments",[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\u002Fprc",[84],"nofollow","prc"," .",[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,169,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,159,164],{},[121,145,146],{},"PRC01-F",[121,148,149],{},"High",[121,151,152],{},"Likely",[121,154,155],{},"Yes",[121,157,158],{},"No",[121,160,161],{},[73,162,163],{},"P18",[121,165,166],{},[73,167,168],{},"L1",[98,170,171,174,176,179,181,183,188],{},[121,172,173],{},"PRC02-F",[121,175,149],{},[121,177,178],{},"Probable",[121,180,155],{},[121,182,158],{},[121,184,185],{},[73,186,187],{},"P12",[121,189,190],{},[73,191,168],{},[98,193,194,197,199,202,204,206,211],{},[121,195,196],{},"PRC03-F",[121,198,149],{},[121,200,201],{},"Unlikely",[121,203,155],{},[121,205,155],{},[121,207,208],{},[73,209,210],{},"P9",[121,212,213],{},[73,214,215],{},"L2",[42,217,219],{"id":218},"related-rules-and-recommendations","Related Rules and Recommendations",[221,222],"hr",{},[70,224,225,232,233,232,239],{},[53,226,228],{"href":227},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002Fpre30-c",[229,230],"img",{"src":231},"attachments\u002F88487228\u002F638779539.png"," ",[53,234,236],{"href":235},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002F",[229,237],{"src":238},"attachments\u002F88487228\u002F638779540.png",[53,240,242],{"href":241},"\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp01-f",[229,243],{"src":244},"attachments\u002F88487228\u002F638779541.png",[42,246,248],{"id":247},"attachments","Attachments:",[250,251,255],"div",{"className":252,"align":254},[253],"greybox","left",[70,256,257,232,261,264,265,267,232,269,264,272,274,232,276,264],{},[229,258],{"alt":259,"src":260},"","images\u002Ficons\u002Fbullet_blue.gif",[53,262,263],{"href":231},"button_arrow_left.png"," (image\u002Fpng)",[77,266],{},[229,268],{"alt":259,"src":260},[53,270,271],{"href":238},"button_arrow_up.png",[77,273],{},[229,275],{"alt":259,"src":260},[53,277,278],{"href":244},"button_arrow_right.png",{"title":259,"searchDepth":280,"depth":280,"links":281},2,[282,283,284,285],{"id":44,"depth":280,"text":45},{"id":89,"depth":280,"text":90},{"id":218,"depth":280,"text":219},{"id":247,"depth":280,"text":248},"md",{},"\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc",{"title":33,"description":259},"9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F1.index","fRRE2aWV2Zrv7r7SxSPO2eP3cFX4msfTWBxTT9V_1WI",[293,297],{"title":294,"path":295,"stem":296,"children":-1},"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":56,"path":55,"stem":298,"children":-1},"9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F2.prc01-f",[300],{"title":301,"path":302,"stem":303,"children":304},"Sei Cert Fortran Coding Standard","\u002Fsei-cert-fortran-coding-standard","9.sei-cert-fortran-coding-standard",[305,308,330,344,370,380,384,394,398,402,406,410,425,433,437,455,476],{"title":306,"path":302,"stem":307},"SEI CERT Fortran Coding Standard","9.sei-cert-fortran-coding-standard\u002F1.index",{"title":309,"path":310,"stem":311,"children":312},"Arrays (ARR)","\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr","9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F1.index",[313,314,318,322,326],{"title":309,"path":310,"stem":311},{"title":315,"path":316,"stem":317},"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":319,"path":320,"stem":321},"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":323,"path":324,"stem":325},"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":327,"path":328,"stem":329},"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":331,"path":332,"stem":333,"children":334},"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",[335,336,340],{"title":331,"path":332,"stem":333},{"title":337,"path":338,"stem":339},"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":341,"path":342,"stem":343},"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":345,"path":346,"stem":347,"children":348},"Concurrency (CON)","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F1.index",[349,350,354,358,362,366],{"title":345,"path":346,"stem":347},{"title":351,"path":352,"stem":353},"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":355,"path":356,"stem":357},"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":359,"path":360,"stem":361},"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":363,"path":364,"stem":365},"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":367,"path":368,"stem":369},"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":371,"path":372,"stem":373,"children":374},"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",[375,376],{"title":371,"path":372,"stem":373},{"title":377,"path":378,"stem":379},"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":381,"path":382,"stem":383},"Execution Control (EXC)","\u002Fsei-cert-fortran-coding-standard\u002Fexecution-control-exc","9.sei-cert-fortran-coding-standard\u002F06.execution-control-exc",{"title":385,"path":386,"stem":387,"children":388},"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",[389,390],{"title":385,"path":386,"stem":387},{"title":391,"path":392,"stem":393},"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":395,"path":396,"stem":397},"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":399,"path":400,"stem":401},"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":403,"path":404,"stem":405},"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":407,"path":408,"stem":409},"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":411,"path":412,"stem":413,"children":414},"Miscellaneous (MSC)","\u002Fsei-cert-fortran-coding-standard\u002Fmiscellaneous-msc","9.sei-cert-fortran-coding-standard\u002F12.miscellaneous-msc\u002F1.index",[415,416,420,424],{"title":411,"path":412,"stem":413},{"title":417,"path":418,"stem":419},"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":421,"path":422,"stem":423},"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":294,"path":295,"stem":296},{"title":33,"path":288,"stem":290,"children":426},[427,428,429,431],{"title":33,"path":288,"stem":290},{"title":56,"path":55,"stem":298},{"title":62,"path":61,"stem":430},"9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F3.prc02-f",{"title":68,"path":67,"stem":432},"9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F4.prc03-f",{"title":434,"path":435,"stem":436},"Program Units (PRU)","\u002Fsei-cert-fortran-coding-standard\u002Fprogram-units-pru","9.sei-cert-fortran-coding-standard\u002F14.program-units-pru",{"title":438,"path":439,"stem":440,"children":441},"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",[442,443,447,451],{"title":438,"path":439,"stem":440},{"title":444,"path":445,"stem":446},"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":448,"path":449,"stem":450},"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":452,"path":453,"stem":454},"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":456,"path":457,"stem":458,"children":459},"Types (TYP)","\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F1.index",[460,461,464,468,472],{"title":456,"path":457,"stem":458},{"title":462,"path":241,"stem":463},"TYP01-F. Use Intrinsic Assignment for Character Entities","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F2.typ01-f",{"title":465,"path":466,"stem":467},"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":469,"path":470,"stem":471},"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":473,"path":474,"stem":475},"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":477,"path":478,"stem":479},"Acknowledgments","\u002Fsei-cert-fortran-coding-standard\u002Facknowledgements","9.sei-cert-fortran-coding-standard\u002Facknowledgements",1780320139761]