[{"data":1,"prerenderedAt":643},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fmiscellaneous-msc\u002Fmsc03-f":31,"surround-\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fmiscellaneous-msc\u002Fmsc03-f":456,"sidebar-sei-cert-fortran-coding-standard":465},[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":449,"extension":450,"meta":451,"navigation":7,"path":452,"seo":453,"stem":454,"__hash__":455},"content\u002F9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F12.miscellaneous-msc\u002F4.msc03-f.md","MSC03-F. Do not depend on undefined behavior",{"type":35,"value":36,"toc":443},"minimark",[37,41,49,54,62,204,208,211,310,314,317,379,382,405,409,439],[38,39,33],"h1",{"id":40},"msc03-f-do-not-depend-on-undefined-behavior",[42,43,44,48],"p",{},[45,46,47],"em",{},"Undefined behavior"," refers to the execution of a nonconforming Fortran program, in which language rules are violated due to erroneous constructs or invalid use of data. When a program exhibits undefined behavior, a Fortran compiler is free to produce any result: correct output, incorrect output, crashes, silent data corruption, or behavior that varies between optimization levels or platforms.",[50,51,53],"h2",{"id":52},"noncompliant-code-example","Noncompliant Code Example",[42,55,56,57,61],{},"In this noncompliant example, a code attempts to detect integer overflow by checking whether the condition ",[58,59,60],"code",{},"a + 100 > a"," is true or false. Apparently, this condition must always be true. However, it can evaluate to false if signed integer overflow occurs. A conforming compiler is allowed to assume that overflow never happens, and as a consequence, the compiler may remove the test entirely, reorder computations, or produce unexpected results. As a result the code may be miscompiled or behave unpredictably when optimizations are enabled.",[63,64,66],"code-block",{"quality":65},"bad",[67,68,73],"pre",{"className":69,"code":70,"language":71,"meta":72,"style":72},"language-fortran shiki shiki-themes github-light-high-contrast github-dark-high-contrast monokai","program koo\n  use iso_fortran_env, only : int32\n  implicit none\n\n  call foo(100_int32)\n  call foo(huge(0_int32))\n\ncontains\n\n  subroutine foo(a)\n    integer(int32), intent(in) :: a\n    integer(int32) :: tmp\n\n    if (.not. (a + 100_int32 > a)) then\n      error stop \"Integer overflow detected\"\n    end if\n\n    tmp = a + 100_int32\n    print *, tmp, a\n  end subroutine foo\n\nend program koo\n","fortran","",[58,74,75,83,89,95,101,107,113,118,124,129,135,141,147,152,158,164,170,175,181,187,193,198],{"__ignoreMap":72},[76,77,80],"span",{"class":78,"line":79},"line",1,[76,81,82],{},"program koo\n",[76,84,86],{"class":78,"line":85},2,[76,87,88],{},"  use iso_fortran_env, only : int32\n",[76,90,92],{"class":78,"line":91},3,[76,93,94],{},"  implicit none\n",[76,96,98],{"class":78,"line":97},4,[76,99,100],{"emptyLinePlaceholder":7},"\n",[76,102,104],{"class":78,"line":103},5,[76,105,106],{},"  call foo(100_int32)\n",[76,108,110],{"class":78,"line":109},6,[76,111,112],{},"  call foo(huge(0_int32))\n",[76,114,116],{"class":78,"line":115},7,[76,117,100],{"emptyLinePlaceholder":7},[76,119,121],{"class":78,"line":120},8,[76,122,123],{},"contains\n",[76,125,127],{"class":78,"line":126},9,[76,128,100],{"emptyLinePlaceholder":7},[76,130,132],{"class":78,"line":131},10,[76,133,134],{},"  subroutine foo(a)\n",[76,136,138],{"class":78,"line":137},11,[76,139,140],{},"    integer(int32), intent(in) :: a\n",[76,142,144],{"class":78,"line":143},12,[76,145,146],{},"    integer(int32) :: tmp\n",[76,148,150],{"class":78,"line":149},13,[76,151,100],{"emptyLinePlaceholder":7},[76,153,155],{"class":78,"line":154},14,[76,156,157],{},"    if (.not. (a + 100_int32 > a)) then\n",[76,159,161],{"class":78,"line":160},15,[76,162,163],{},"      error stop \"Integer overflow detected\"\n",[76,165,167],{"class":78,"line":166},16,[76,168,169],{},"    end if\n",[76,171,173],{"class":78,"line":172},17,[76,174,100],{"emptyLinePlaceholder":7},[76,176,178],{"class":78,"line":177},18,[76,179,180],{},"    tmp = a + 100_int32\n",[76,182,184],{"class":78,"line":183},19,[76,185,186],{},"    print *, tmp, a\n",[76,188,190],{"class":78,"line":189},20,[76,191,192],{},"  end subroutine foo\n",[76,194,196],{"class":78,"line":195},21,[76,197,100],{"emptyLinePlaceholder":7},[76,199,201],{"class":78,"line":200},22,[76,202,203],{},"end program koo\n",[50,205,207],{"id":206},"compliant-solution","Compliant Solution",[42,209,210],{},"In the compliant solution, the code does not depend on undefined behavior:",[63,212,214],{"quality":213},"good",[67,215,217],{"className":69,"code":216,"language":71,"meta":72,"style":72},"program koo\n  use iso_fortran_env, only : int32\n  implicit none\n\n  call foo(100_int32)\n  call foo(huge(0_int32))\n\ncontains\n\n  subroutine foo(a)\n    integer(int32), intent(in) :: a\n    integer(int32) :: tmp\n\n    if (a > huge(a) - 100_int32) then\n      error stop \"Overflow would occur\"\n    end if\n\n    tmp = a + 100_int32\n    print *, tmp, a\n  end subroutine foo\n\nend program koo\n",[58,218,219,223,227,231,235,239,243,247,251,255,259,263,267,271,276,281,285,289,294,298,302,306],{"__ignoreMap":72},[76,220,221],{"class":78,"line":79},[76,222,82],{},[76,224,225],{"class":78,"line":85},[76,226,88],{},[76,228,229],{"class":78,"line":91},[76,230,94],{},[76,232,233],{"class":78,"line":97},[76,234,100],{"emptyLinePlaceholder":7},[76,236,237],{"class":78,"line":103},[76,238,106],{},[76,240,241],{"class":78,"line":109},[76,242,112],{},[76,244,245],{"class":78,"line":115},[76,246,100],{"emptyLinePlaceholder":7},[76,248,249],{"class":78,"line":120},[76,250,123],{},[76,252,253],{"class":78,"line":126},[76,254,100],{"emptyLinePlaceholder":7},[76,256,257],{"class":78,"line":131},[76,258,134],{},[76,260,261],{"class":78,"line":137},[76,262,140],{},[76,264,265],{"class":78,"line":143},[76,266,146],{},[76,268,269],{"class":78,"line":149},[76,270,100],{"emptyLinePlaceholder":7},[76,272,273],{"class":78,"line":154},[76,274,275],{},"    if (a > huge(a) - 100_int32) then\n",[76,277,278],{"class":78,"line":160},[76,279,280],{},"      error stop \"Overflow would occur\"\n",[76,282,283],{"class":78,"line":166},[76,284,169],{},[76,286,287],{"class":78,"line":172},[76,288,100],{"emptyLinePlaceholder":7},[76,290,291],{"class":78,"line":177},[76,292,293],{},"    tmp = a + 100_int32\n",[76,295,296],{"class":78,"line":183},[76,297,186],{},[76,299,300],{"class":78,"line":189},[76,301,192],{},[76,303,304],{"class":78,"line":195},[76,305,100],{"emptyLinePlaceholder":7},[76,307,308],{"class":78,"line":200},[76,309,203],{},[50,311,313],{"id":312},"risk-assessment","Risk Assessment",[42,315,316],{},"Undefined behavior can produce incorrect results, silent data corruption, crashes, or nondeterministic behavior that varies across compilers or platforms. Programmers should ensure that the code avoids undefined behavior in all cases.",[318,319,320,348],"table",{},[321,322,323],"thead",{},[324,325,326,330,333,336,339,342,345],"tr",{},[327,328,329],"th",{},"Rule",[327,331,332],{},"Severity",[327,334,335],{},"Likelihood",[327,337,338],{},"Detectable",[327,340,341],{},"Repairable",[327,343,344],{},"Priority",[327,346,347],{},"Level",[349,350,351],"tbody",{},[324,352,353,357,360,363,366,368,374],{},[354,355,356],"td",{},"MSC03-F",[354,358,359],{},"High",[354,361,362],{},"Likely",[354,364,365],{},"No",[354,367,365],{},[354,369,370],{},[371,372,373],"strong",{},"P9",[354,375,376],{},[371,377,378],{},"L2",[380,381],"hr",{},[42,383,384,392,393,392,399],{},[385,386,388],"a",{"href":387},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002Fpre30-c",[389,390],"img",{"src":391},"attachments\u002F629047339\u002F638779639.png"," ",[385,394,396],{"href":395},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002F",[389,397],{"src":398},"attachments\u002F629047339\u002F638779640.png",[385,400,402],{"href":401},"\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp01-f",[389,403],{"src":404},"attachments\u002F629047339\u002F638779641.png",[50,406,408],{"id":407},"attachments","Attachments:",[410,411,415],"div",{"className":412,"align":414},[413],"greybox","left",[42,416,417,392,420,423,424,427,392,429,423,432,434,392,436,423],{},[389,418],{"alt":72,"src":419},"images\u002Ficons\u002Fbullet_blue.gif",[385,421,422],{"href":391},"button_arrow_left.png"," (image\u002Fpng)",[425,426],"br",{},[389,428],{"alt":72,"src":419},[385,430,431],{"href":398},"button_arrow_up.png",[425,433],{},[389,435],{"alt":72,"src":419},[385,437,438],{"href":404},"button_arrow_right.png",[440,441,442],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":72,"searchDepth":85,"depth":85,"links":444},[445,446,447,448],{"id":52,"depth":85,"text":53},{"id":206,"depth":85,"text":207},{"id":312,"depth":85,"text":313},{"id":407,"depth":85,"text":408},"Undefined behavior refers to the execution of a nonconforming Fortran program, in which language rules are violated due to erroneous constructs or invalid use of data. When a program exhibits undefined behavior, a Fortran compiler is free to produce any result: correct output, incorrect output, crashes, silent data corruption, or behavior that varies between optimization levels or platforms.","md",{},"\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fmiscellaneous-msc\u002Fmsc03-f",{"title":33,"description":449},"9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F12.miscellaneous-msc\u002F4.msc03-f","aryrhKj5Hag6r_Zw0pBrhuER8y99YlHhU88J2UuGwKs",[457,461],{"title":458,"path":459,"stem":460,"children":-1},"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":462,"path":463,"stem":464,"children":-1},"Procedures (PRC)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fprocedures-prc","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F13.procedures-prc\u002F1.index",[466],{"title":467,"path":468,"stem":469,"children":470},"SEI CERT Fortran Coding Standard","\u002Fsei-cert-fortran-coding-standard","9.sei-cert-fortran-coding-standard\u002F01.index",[471,472,484,639],{"title":467,"path":468,"stem":469},{"title":473,"path":474,"stem":475,"children":476},"Front Matter","\u002Fsei-cert-fortran-coding-standard\u002Ffront-matter","9.sei-cert-fortran-coding-standard\u002F02.front-matter\u002F1.index",[477,478],{"title":473,"path":474,"stem":475},{"title":479,"path":480,"stem":481,"children":482},"Introduction","\u002Fsei-cert-fortran-coding-standard\u002Ffront-matter\u002Fintroduction","9.sei-cert-fortran-coding-standard\u002F02.front-matter\u002F2.introduction\u002F01.index",[483],{"title":479,"path":480,"stem":481},{"title":485,"path":486,"stem":487,"children":488},"Guidelines","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F01.index",[489,490,512,526,552,562,572,584,599,617],{"title":485,"path":486,"stem":487},{"title":491,"path":492,"stem":493,"children":494},"Arrays (ARR)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Farrays-arr","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F02.arrays-arr\u002F1.index",[495,496,500,504,508],{"title":491,"path":492,"stem":493},{"title":497,"path":498,"stem":499},"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":501,"path":502,"stem":503},"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":505,"path":506,"stem":507},"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":509,"path":510,"stem":511},"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":513,"path":514,"stem":515,"children":516},"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",[517,518,522],{"title":513,"path":514,"stem":515},{"title":519,"path":520,"stem":521},"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":523,"path":524,"stem":525},"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":527,"path":528,"stem":529,"children":530},"Concurrency (CON)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fconcurrency-con","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F04.concurrency-con\u002F1.index",[531,532,536,540,544,548],{"title":527,"path":528,"stem":529},{"title":533,"path":534,"stem":535},"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":537,"path":538,"stem":539},"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":541,"path":542,"stem":543},"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":545,"path":546,"stem":547},"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":549,"path":550,"stem":551},"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":553,"path":554,"stem":555,"children":556},"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",[557,558],{"title":553,"path":554,"stem":555},{"title":559,"path":560,"stem":561},"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":563,"path":564,"stem":565,"children":566},"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",[567,568],{"title":563,"path":564,"stem":565},{"title":569,"path":570,"stem":571},"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":573,"path":574,"stem":575,"children":576},"Miscellaneous (MSC)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Fmiscellaneous-msc","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F12.miscellaneous-msc\u002F1.index",[577,578,582,583],{"title":573,"path":574,"stem":575},{"title":579,"path":580,"stem":581},"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":458,"path":459,"stem":460},{"title":33,"path":452,"stem":454},{"title":462,"path":463,"stem":464,"children":585},[586,587,591,595],{"title":462,"path":463,"stem":464},{"title":588,"path":589,"stem":590},"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":592,"path":593,"stem":594},"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":596,"path":597,"stem":598},"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":600,"path":601,"stem":602,"children":603},"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",[604,605,609,613],{"title":600,"path":601,"stem":602},{"title":606,"path":607,"stem":608},"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":610,"path":611,"stem":612},"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":614,"path":615,"stem":616},"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":618,"path":619,"stem":620,"children":621},"Types (TYP)","\u002Fsei-cert-fortran-coding-standard\u002Fguidelines\u002Ftypes-typ","9.sei-cert-fortran-coding-standard\u002F04.guidelines\u002F16.types-typ\u002F1.index",[622,623,627,631,635],{"title":618,"path":619,"stem":620},{"title":624,"path":625,"stem":626},"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":628,"path":629,"stem":630},"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":632,"path":633,"stem":634},"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":636,"path":637,"stem":638},"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":640,"path":641,"stem":642},"Acknowledgments","\u002Fsei-cert-fortran-coding-standard\u002Facknowledgements","9.sei-cert-fortran-coding-standard\u002Facknowledgements",1783713877043]