[{"data":1,"prerenderedAt":534},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fdeclarations-and-initialization-dcl":31,"surround-\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fdeclarations-and-initialization-dcl":327,"sidebar-sei-cert-fortran-coding-standard":334},[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":321,"meta":322,"navigation":7,"path":323,"seo":324,"stem":325,"__hash__":326},"content\u002F9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.declarations-and-initialization-dcl\u002F1.index.md","Declarations and Initialization (DCL)",{"type":35,"value":36,"toc":314},"minimark",[37,41,46,81,84,88,254,257,280,284],[38,39,33],"h1",{"id":40},"declarations-and-initialization-dcl",[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\u002Fdeclarations-and-initialization-dcl\u002Fdcl01-f","DCL01-F. Explicitly declare pure procedures",[50,58,59],{},[53,60,62],{"href":61},"\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fdeclarations-and-initialization-dcl\u002Fdcl02-f","DCL02-F. Separate initialization from declaration to avoid implicit variable persistence",[50,64,65],{},[53,66,68],{"href":67},"\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fdeclarations-and-initialization-dcl\u002Fdcl03-f","DCL03-F. Avoid undefined behavior due to uninitialized variables",[50,70,71],{},[53,72,74],{"href":73},"\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fdeclarations-and-initialization-dcl\u002Fdcl04-f","DCL04-F. Conditionally initialized variables can lead to undefined behavior",[50,76,77],{},[53,78,80],{"href":79},"\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fdeclarations-and-initialization-dcl\u002Fdcl05-f","DCL05-F. Uninitialized output arguments can lead to undefined behavior",[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,166,191,212,233],"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,161],{},[118,142,143],{},"DCL01-F",[118,145,146],{},"Low",[118,148,149],{},"Unlikely",[118,151,152],{},"Yes",[118,154,152],{},[118,156,157],{},[158,159,160],"strong",{},"P3",[118,162,163],{},[158,164,165],{},"L3",[95,167,168,171,174,177,179,181,186],{},[118,169,170],{},"DCL02-F",[118,172,173],{},"High",[118,175,176],{},"Likely",[118,178,152],{},[118,180,152],{},[118,182,183],{},[158,184,185],{},"P27",[118,187,188],{},[158,189,190],{},"L1",[95,192,193,196,198,200,202,204,208],{},[118,194,195],{},"DCL03-F",[118,197,173],{},[118,199,176],{},[118,201,152],{},[118,203,152],{},[118,205,206],{},[158,207,185],{},[118,209,210],{},[158,211,190],{},[95,213,214,217,219,221,223,225,229],{},[118,215,216],{},"DCL04-F",[118,218,173],{},[118,220,176],{},[118,222,152],{},[118,224,152],{},[118,226,227],{},[158,228,185],{},[118,230,231],{},[158,232,190],{},[95,234,235,238,240,242,244,246,250],{},[118,236,237],{},"DCL05-F",[118,239,173],{},[118,241,176],{},[118,243,152],{},[118,245,152],{},[118,247,248],{},[158,249,185],{},[118,251,252],{},[158,253,190],{},[255,256],"hr",{},[258,259,260,267,268,267,274],"p",{},[53,261,263],{"href":262},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002Fpre30-c",[264,265],"img",{"src":266},"attachments\u002F88487232\u002F638779503.png"," ",[53,269,271],{"href":270},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002F",[264,272],{"src":273},"attachments\u002F88487232\u002F638779504.png",[53,275,277],{"href":276},"\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp01-f",[264,278],{"src":279},"attachments\u002F88487232\u002F638779505.png",[42,281,283],{"id":282},"attachments","Attachments:",[285,286,290],"div",{"className":287,"align":289},[288],"greybox","left",[258,291,292,267,295,298,299,302,267,304,298,307,309,267,311,298],{},[264,293],{"alt":83,"src":294},"images\u002Ficons\u002Fbullet_blue.gif",[53,296,297],{"href":266},"button_arrow_left.png"," (image\u002Fpng)",[300,301],"br",{},[264,303],{"alt":83,"src":294},[53,305,306],{"href":273},"button_arrow_up.png",[300,308],{},[264,310],{"alt":83,"src":294},[53,312,313],{"href":279},"button_arrow_right.png",{"title":83,"searchDepth":315,"depth":315,"links":316},2,[317,318,319,320],{"id":44,"depth":315,"text":45},{"id":83,"depth":315,"text":83},{"id":86,"depth":315,"text":87},{"id":282,"depth":315,"text":283},"md",{},"\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fdeclarations-and-initialization-dcl",{"title":33,"description":83},"9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.declarations-and-initialization-dcl\u002F1.index","9POuNFle0y6GfHup_PaxXLn7HhWuNb48l2TmvTlm6es",[328,332],{"title":329,"path":330,"stem":331},"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":56,"path":55,"stem":333},"9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.declarations-and-initialization-dcl\u002F2.dcl01-f",[335],{"title":336,"path":337,"stem":338,"children":339},"SEI CERT Fortran Coding Standard","\u002Fsei-cert-fortran-coding-standard","9.sei-cert-fortran-coding-standard\u002F01.index",[340,341,353,512,530],{"title":336,"path":337,"stem":338},{"title":342,"path":343,"stem":344,"children":345},"Front Matter","\u002Fsei-cert-fortran-coding-standard\u002Ffront-matter","9.sei-cert-fortran-coding-standard\u002F02.front-matter\u002F1.index",[346,347],{"title":342,"path":343,"stem":344},{"title":348,"path":349,"stem":350,"children":351},"Introduction","\u002Fsei-cert-fortran-coding-standard\u002Ffront-matter\u002Fintroduction","9.sei-cert-fortran-coding-standard\u002F02.front-matter\u002F2.introduction\u002F01.index",[352],{"title":348,"path":349,"stem":350},{"title":45,"path":354,"stem":355,"children":356},"\u002Fsei-cert-fortran-coding-standard\u002Fguidelines","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F01.index",[357,358,377,390,416,426,436,454,472,490],{"title":45,"path":354,"stem":355},{"title":359,"path":360,"stem":361,"children":362},"Arrays (ARR)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Farrays-arr","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F02.arrays-arr\u002F1.index",[363,364,368,372,376],{"title":359,"path":360,"stem":361},{"title":365,"path":366,"stem":367},"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":369,"path":370,"stem":371},"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":373,"path":374,"stem":375},"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":329,"path":330,"stem":331},{"title":33,"path":323,"stem":325,"children":378},[379,380,381,384,386,388],{"title":33,"path":323,"stem":325},{"title":56,"path":55,"stem":333},{"title":382,"path":61,"stem":383},"DCL02-F. Explicitly declare the 'save' attribute or split the variable initialization to prevent unintended behavior","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.declarations-and-initialization-dcl\u002F2.dcl02-f",{"title":68,"path":67,"stem":385},"9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.declarations-and-initialization-dcl\u002F2.dcl03-f",{"title":74,"path":73,"stem":387},"9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.declarations-and-initialization-dcl\u002F2.dcl04-f",{"title":80,"path":79,"stem":389},"9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F03.declarations-and-initialization-dcl\u002F2.dcl05-f",{"title":391,"path":392,"stem":393,"children":394},"Concurrency (CON)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fconcurrency-con","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F1.index",[395,396,400,404,408,412],{"title":391,"path":392,"stem":393},{"title":397,"path":398,"stem":399},"CON01-F. Explicitly declare OpenMP data-sharing attributes for all variables","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fconcurrency-con\u002Fcon01-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F2.con01-f",{"title":401,"path":402,"stem":403},"CON02-F. Protect reduction variables in multithreaded code","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fconcurrency-con\u002Fcon02-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F3.con02-f",{"title":405,"path":406,"stem":407},"CON03-F. Protect multithreading recurrences to avoid data races","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fconcurrency-con\u002Fcon03-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F4.con03-f",{"title":409,"path":410,"stem":411},"CON04-F. Do not use out-of-dimension subscripts in multithreaded code","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fconcurrency-con\u002Fcon04-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F5.con04-f",{"title":413,"path":414,"stem":415},"CON05-F. Ensure correct OpenMP datascoping of variables in parallel regions","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fconcurrency-con\u002Fcon05-f","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F6.con05-f",{"title":417,"path":418,"stem":419,"children":420},"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",[421,422],{"title":417,"path":418,"stem":419},{"title":423,"path":424,"stem":425},"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":427,"path":428,"stem":429,"children":430},"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",[431,432],{"title":427,"path":428,"stem":429},{"title":433,"path":434,"stem":435},"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":437,"path":438,"stem":439,"children":440},"Miscellaneous (MSC)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fmiscellaneous-msc","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F12.miscellaneous-msc\u002F1.index",[441,442,446,450],{"title":437,"path":438,"stem":439},{"title":443,"path":444,"stem":445},"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":447,"path":448,"stem":449},"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":451,"path":452,"stem":453},"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":455,"path":456,"stem":457,"children":458},"Procedures (PRC)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fprocedures-prc","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F13.procedures-prc\u002F1.index",[459,460,464,468],{"title":455,"path":456,"stem":457},{"title":461,"path":462,"stem":463},"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":465,"path":466,"stem":467},"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":469,"path":470,"stem":471},"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":473,"path":474,"stem":475,"children":476},"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",[477,478,482,486],{"title":473,"path":474,"stem":475},{"title":479,"path":480,"stem":481},"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":483,"path":484,"stem":485},"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":487,"path":488,"stem":489},"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":491,"path":492,"stem":493,"children":494},"Types (TYP)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Ftypes-typ","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F16.types-typ\u002F1.index",[495,496,500,504,508],{"title":491,"path":492,"stem":493},{"title":497,"path":498,"stem":499},"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":501,"path":502,"stem":503},"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":505,"path":506,"stem":507},"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":509,"path":510,"stem":511},"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":513,"path":514,"stem":515,"children":516},"Back Matter","\u002Fsei-cert-fortran-coding-standard\u002Fback-matter","9.sei-cert-fortran-coding-standard\u002F05.back-matter\u002F1.index",[517,518,522,526],{"title":513,"path":514,"stem":515},{"title":519,"path":520,"stem":521},"AA. Bibliography","\u002Fsei-cert-fortran-coding-standard\u002Fback-matter\u002Faa-bibliography","9.sei-cert-fortran-coding-standard\u002F05.back-matter\u002F2.aa-bibliography",{"title":523,"path":524,"stem":525},"BB. Definitions","\u002Fsei-cert-fortran-coding-standard\u002Fback-matter\u002Fbb-definitions","9.sei-cert-fortran-coding-standard\u002F05.back-matter\u002F3.bb-definitions",{"title":527,"path":528,"stem":529},"CC. Undefined Behavior","\u002Fsei-cert-fortran-coding-standard\u002Fback-matter\u002Fcc-undefined-behavior","9.sei-cert-fortran-coding-standard\u002F05.back-matter\u002F4.cc-undefined-behavior",{"title":531,"path":532,"stem":533},"Acknowledgments","\u002Fsei-cert-fortran-coding-standard\u002Facknowledgements","9.sei-cert-fortran-coding-standard\u002Facknowledgements",1785439581283]