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