[{"data":1,"prerenderedAt":500},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fconcurrency-con":31,"surround-\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fconcurrency-con":324,"sidebar-sei-cert-fortran-coding-standard":331},[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":291,"extension":318,"meta":319,"navigation":7,"path":320,"seo":321,"stem":322,"__hash__":323},"content\u002F9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F1.index.md","Concurrency (CON)",{"type":35,"value":36,"toc":312},"minimark",[37,41,46,81,85,251,254,277,281],[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\u002Fguidelines\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\u002Fguidelines\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\u002Fguidelines\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\u002Fguidelines\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\u002Fguidelines\u002Fconcurrency-con\u002Fcon05-f","CON05-F. Ensure correct OpenMP datascoping of variables in parallel regions",[42,82,84],{"id":83},"risk-assessment-summary","Risk Assessment Summary",[86,87,88,109],"table",{},[89,90,91],"thead",{},[92,93,94,97,99,101,103,105,107],"tr",{},[95,96],"th",{},[95,98],{},[95,100],{},[95,102],{},[95,104],{},[95,106],{},[95,108],{},[110,111,112,136,163,187,209,230],"tbody",{},[92,113,114,118,121,124,127,130,133],{},[115,116,117],"td",{},"Rule",[115,119,120],{},"Severity",[115,122,123],{},"Likelihood",[115,125,126],{},"Detectable",[115,128,129],{},"Repairable",[115,131,132],{},"Priority",[115,134,135],{},"Level",[92,137,138,141,144,147,150,152,158],{},[115,139,140],{},"CON01-F",[115,142,143],{},"Medium",[115,145,146],{},"Probable",[115,148,149],{},"Yes",[115,151,149],{},[115,153,154],{},[155,156,157],"strong",{},"P12",[115,159,160],{},[155,161,162],{},"L1",[92,164,165,168,171,174,176,178,183],{},[115,166,167],{},"CON02-F",[115,169,170],{},"High",[115,172,173],{},"Likely",[115,175,149],{},[115,177,149],{},[115,179,180],{},[155,181,182],{},"P27",[115,184,185],{},[155,186,162],{},[92,188,189,192,194,196,199,201,205],{},[115,190,191],{},"CON03-F",[115,193,170],{},[115,195,173],{},[115,197,198],{},"No",[115,200,149],{},[115,202,203],{},[155,204,182],{},[115,206,207],{},[155,208,162],{},[92,210,211,214,216,218,220,222,226],{},[115,212,213],{},"CON04-F",[115,215,170],{},[115,217,173],{},[115,219,149],{},[115,221,149],{},[115,223,224],{},[155,225,182],{},[115,227,228],{},[155,229,162],{},[92,231,232,235,237,239,241,243,247],{},[115,233,234],{},"CON05-F",[115,236,170],{},[115,238,173],{},[115,240,149],{},[115,242,149],{},[115,244,245],{},[155,246,182],{},[115,248,249],{},[155,250,162],{},[252,253],"hr",{},[255,256,257,264,265,264,271],"p",{},[53,258,260],{"href":259},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002Fpre30-c",[261,262],"img",{"src":263},"attachments\u002F626524177\u002F638779583.png"," ",[53,266,268],{"href":267},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002F",[261,269],{"src":270},"attachments\u002F626524177\u002F638779584.png",[53,272,274],{"href":273},"\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp01-f",[261,275],{"src":276},"attachments\u002F626524177\u002F638779585.png",[42,278,280],{"id":279},"attachments","Attachments:",[282,283,287],"div",{"className":284,"align":286},[285],"greybox","left",[255,288,289,264,293,296,297,300,264,302,296,305,307,264,309,296],{},[261,290],{"alt":291,"src":292},"","images\u002Ficons\u002Fbullet_blue.gif",[53,294,295],{"href":263},"button_arrow_left.png"," (image\u002Fpng)",[298,299],"br",{},[261,301],{"alt":291,"src":292},[53,303,304],{"href":270},"button_arrow_up.png",[298,306],{},[261,308],{"alt":291,"src":292},[53,310,311],{"href":276},"button_arrow_right.png",{"title":291,"searchDepth":313,"depth":313,"links":314},2,[315,316,317],{"id":44,"depth":313,"text":45},{"id":83,"depth":313,"text":84},{"id":279,"depth":313,"text":280},"md",{},"\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fconcurrency-con",{"title":33,"description":291},"9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F1.index","hQeze7mQNt98ebarO8CkktDWebWRrHTrK5Bob-k2nSI",[325,329],{"title":326,"path":327,"stem":328},"ADS02-F. Separate initialization from declaration to avoid implicit variable persistence","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fattribute-declarations-and-specifications-ads\u002Fads02-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.attribute-declarations-and-specifications-ads\u002F2.ads02-f",{"title":56,"path":55,"stem":330},"9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F2.con01-f",[332],{"title":333,"path":334,"stem":335,"children":336},"SEI CERT Fortran Coding Standard","\u002Fsei-cert-fortran-coding-standard","9.sei-cert-fortran-coding-standard\u002F01.index",[337,338,350,496],{"title":333,"path":334,"stem":335},{"title":339,"path":340,"stem":341,"children":342},"Front Matter","\u002Fsei-cert-fortran-coding-standard\u002Ffront-matter","9.sei-cert-fortran-coding-standard\u002F02.front-matter\u002F1.index",[343,344],{"title":339,"path":340,"stem":341},{"title":345,"path":346,"stem":347,"children":348},"Introduction","\u002Fsei-cert-fortran-coding-standard\u002Ffront-matter\u002Fintroduction","9.sei-cert-fortran-coding-standard\u002F02.front-matter\u002F2.introduction\u002F01.index",[349],{"title":345,"path":346,"stem":347},{"title":45,"path":351,"stem":352,"children":353},"\u002Fsei-cert-fortran-coding-standard\u002Fguidelines","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F01.index",[354,355,377,388,400,410,420,438,456,474],{"title":45,"path":351,"stem":352},{"title":356,"path":357,"stem":358,"children":359},"Arrays (ARR)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Farrays-arr","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F02.arrays-arr\u002F1.index",[360,361,365,369,373],{"title":356,"path":357,"stem":358},{"title":362,"path":363,"stem":364},"ARR01-F. Do not use out-of-bounds arrays subscripts","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Farrays-arr\u002Farr01-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F02.arrays-arr\u002F2.arr01-f",{"title":366,"path":367,"stem":368},"ARR02-F. Declare array dummy arguments as assumed-shape","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Farrays-arr\u002Farr02-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F02.arrays-arr\u002F3.arr02-f",{"title":370,"path":371,"stem":372},"ARR03-F. Specify array bounds when copying data to device memory","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Farrays-arr\u002Farr03-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F02.arrays-arr\u002F4.arr03-f",{"title":374,"path":375,"stem":376},"ARR04-F. Ensure arrays ranges mapped to devices cover all accessed elements","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Farrays-arr\u002Farr04-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F02.arrays-arr\u002F5.arr04-f",{"title":378,"path":379,"stem":380,"children":381},"Attribute Declarations and Specifications (ADS)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fattribute-declarations-and-specifications-ads","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.attribute-declarations-and-specifications-ads\u002F1.index",[382,383,387],{"title":378,"path":379,"stem":380},{"title":384,"path":385,"stem":386},"ADS01-F. Explicitly declare pure procedures","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fattribute-declarations-and-specifications-ads\u002Fads01-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.attribute-declarations-and-specifications-ads\u002F2.ads01-f",{"title":326,"path":327,"stem":328},{"title":33,"path":320,"stem":322,"children":389},[390,391,392,394,396,398],{"title":33,"path":320,"stem":322},{"title":56,"path":55,"stem":330},{"title":62,"path":61,"stem":393},"9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F3.con02-f",{"title":68,"path":67,"stem":395},"9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F4.con03-f",{"title":74,"path":73,"stem":397},"9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F5.con04-f",{"title":80,"path":79,"stem":399},"9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F6.con05-f",{"title":401,"path":402,"stem":403,"children":404},"Exceptions and IEEE Arithmetic (EIA)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fexceptions-and-ieee-arithmetic-eia","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F05.exceptions-and-ieee-arithmetic-eia\u002F1.index",[405,406],{"title":401,"path":402,"stem":403},{"title":407,"path":408,"stem":409},"EIA01-F. Enforce evaluation order in floating-point expressions","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fexceptions-and-ieee-arithmetic-eia\u002Feia01-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F05.exceptions-and-ieee-arithmetic-eia\u002F2.eia01-f",{"title":411,"path":412,"stem":413,"children":414},"Expressions and Assignment (EXA)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fexpressions-and-assignment-exa","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F07.expressions-and-assignment-exa\u002F1.index",[415,416],{"title":411,"path":412,"stem":413},{"title":417,"path":418,"stem":419},"EXA01-F. Do not read uninitialized memory","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fexpressions-and-assignment-exa\u002Fexa01-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F07.expressions-and-assignment-exa\u002F2.exa01-f",{"title":421,"path":422,"stem":423,"children":424},"Miscellaneous (MSC)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fmiscellaneous-msc","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F12.miscellaneous-msc\u002F1.index",[425,426,430,434],{"title":421,"path":422,"stem":423},{"title":427,"path":428,"stem":429},"MSC01-F. Avoid using legacy or obsolescent Fortran constructs","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fmiscellaneous-msc\u002Fmsc01-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F12.miscellaneous-msc\u002F2.msc01-f",{"title":431,"path":432,"stem":433},"MSC02-F. Beware of compiler-specific extensions","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fmiscellaneous-msc\u002Fmsc02-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F12.miscellaneous-msc\u002F3.msc02-f",{"title":435,"path":436,"stem":437},"MSC03-F. Do not depend on undefined behavior","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fmiscellaneous-msc\u002Fmsc03-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F12.miscellaneous-msc\u002F4.msc03-f",{"title":439,"path":440,"stem":441,"children":442},"Procedures (PRC)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fprocedures-prc","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F13.procedures-prc\u002F1.index",[443,444,448,452],{"title":439,"path":440,"stem":441},{"title":445,"path":446,"stem":447},"PRC01-F. Disable the implicit declaration of procedures","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fprocedures-prc\u002Fprc01-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F13.procedures-prc\u002F2.prc01-f",{"title":449,"path":450,"stem":451},"PRC02-F. Avoid implicit interfaces by using module procedures","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fprocedures-prc\u002Fprc02-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F13.procedures-prc\u002F3.prc02-f",{"title":453,"path":454,"stem":455},"PRC03-F. Declare the intent for all dummy arguments","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fprocedures-prc\u002Fprc03-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F13.procedures-prc\u002F4.prc03-f",{"title":457,"path":458,"stem":459,"children":460},"Scope, Association, and Definition (SAD)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fscope-association-and-definition-sad","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F15.scope-association-and-definition-sad\u002F1.index",[461,462,466,470],{"title":457,"path":458,"stem":459},{"title":463,"path":464,"stem":465},"SAD02-F. Minimize imported module entities using the ONLY clause","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fscope-association-and-definition-sad\u002Fsad02-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F15.scope-association-and-definition-sad\u002F2.sad02-f",{"title":467,"path":468,"stem":469},"SAD03-F. Replace common block with modules for safer data encapsulation","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fscope-association-and-definition-sad\u002Fsad03-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F15.scope-association-and-definition-sad\u002F3.sad03-f",{"title":471,"path":472,"stem":473},"Limit the scope of variables and procedures","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fscope-association-and-definition-sad\u002Flimit-the-scope-of-variables-and-procedures","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F15.scope-association-and-definition-sad\u002F4.limit-the-scope-of-variables-and-procedures",{"title":475,"path":476,"stem":477,"children":478},"Types (TYP)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Ftypes-typ","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F16.types-typ\u002F1.index",[479,480,484,488,492],{"title":475,"path":476,"stem":477},{"title":481,"path":482,"stem":483},"TYP01-F. Use Intrinsic Assignment for Character Entities","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Ftypes-typ\u002Ftyp01-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F16.types-typ\u002F2.typ01-f",{"title":485,"path":486,"stem":487},"TYP02-F. Prohibit implicit typing in all program units","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Ftypes-typ\u002Ftyp02-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F16.types-typ\u002F3.typ02-f",{"title":489,"path":490,"stem":491},"TYP03-F. Ensure intrinsic function arguments match intended precision","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Ftypes-typ\u002Ftyp03-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F16.types-typ\u002F4.typ03-f",{"title":493,"path":494,"stem":495},"TYP04-F. Centralize kind definitions to ensure consistent precision","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Ftypes-typ\u002Ftyp04-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F16.types-typ\u002F5.typ04-f",{"title":497,"path":498,"stem":499},"Acknowledgments","\u002Fsei-cert-fortran-coding-standard\u002Facknowledgements","9.sei-cert-fortran-coding-standard\u002Facknowledgements",1783713872399]