[{"data":1,"prerenderedAt":636},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con\u002Fcon04-f":31,"surround-\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con\u002Fcon04-f":442,"sidebar-sei-cert-fortran-coding-standard":451},[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":44,"extension":436,"meta":437,"navigation":7,"path":438,"seo":439,"stem":440,"__hash__":441},"content\u002F9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F5.con04-f.md","CON04-F. Do not use out-of-dimension subscripts in multithreaded code",{"type":35,"value":36,"toc":430},"minimark",[37,41,45,61,64,69,92,103,202,206,209,281,285,288,366,369,392,396,426],[38,39,33],"h1",{"id":40},"con04-f-do-not-use-out-of-dimension-subscripts-in-multithreaded-code",[42,43,44],"p",{},"Developers shall ensure that all array subscripts remain within the bounds of their respective dimensions. Using an out-of-bounds index to access adjacent memory or \"overflow\" into another dimension is prohibited, as it introduces undefined behavior and hidden data races in multithreaded environments.",[42,46,47,48,52,53,56,57,60],{},"In Fortran, data is stored in column-major order, meaning elements of a column are contiguous in memory. Although a subscript outside a dimension's declared bounds may sometimes reference a valid memory location, this practice is unsafe. For example, accessing ",[49,50,51],"code",{},"  A(0, j) "," on a 2D array with lower bounds ",[49,54,55],{},"1"," could inadvertently reference ",[49,58,59],{},"  A(max_rows, j-1) "," .",[42,62,63],{},"In a multithreaded context, such out-of-bounds accesses create latent data races: multiple threads may read or write overlapping memory simultaneously, violating thread safety. Compilers are free to assume that programs do not rely on undefined behavior; optimizations can therefore invalidate assumptions, resulting in incorrect results or memory corruption. If the memory is uninitialized, this also introduces indeterminate and potential security vulnerabilities.",[65,66,68],"h2",{"id":67},"noncompliant-code-example","Noncompliant Code Example",[42,70,71,72,75,76,79,80,83,84,87,88,91],{},"In this noncompliant example, the inner loop iterates from ",[49,73,74],{},"i=1"," to ",[49,77,78],{},"N"," , but references ",[49,81,82],{},"  A(i + 1,  j) "," . When ",[49,85,86],{},"  i = N "," , the subscript becomes ",[49,89,90],{},"  N + 1 "," , which Fortran interprets as the first element of the next column.",[42,93,94,95,98,99,102],{},"If the outer loop is parallelized by columns, the thread processing column ",[49,96,97],{},"j"," may read ",[49,100,101],{},"  A(1, j+1) "," while another thread writes to it, causing a data race and undefined behavior.",[104,105,107],"code-block",{"quality":106},"bad",[108,109,114],"pre",{"className":110,"code":111,"language":112,"meta":113,"style":113},"language-fortran shiki shiki-themes github-light-high-contrast github-dark-high-contrast monokai","subroutine example(A, N, M)\n  implicit none\n  integer, intent(in) :: N, M\n  real, intent(inout) :: A(N, M)\n  integer             :: i, j\n\n  ! Noncompliant: when i = N, A(i+1, j accesses A(1, j+1)\n  !$omp parallel do private(i, j) shared(A)\n  do j = 1, M - 1\n    do i = 1, N\n      A(i, j) = (A(i, j) + A(i+1, j)) \u002F 2.0\n    end do\n  end do\nend subroutine example\n","fortran","",[49,115,116,124,130,136,142,148,154,160,166,172,178,184,190,196],{"__ignoreMap":113},[117,118,121],"span",{"class":119,"line":120},"line",1,[117,122,123],{},"subroutine example(A, N, M)\n",[117,125,127],{"class":119,"line":126},2,[117,128,129],{},"  implicit none\n",[117,131,133],{"class":119,"line":132},3,[117,134,135],{},"  integer, intent(in) :: N, M\n",[117,137,139],{"class":119,"line":138},4,[117,140,141],{},"  real, intent(inout) :: A(N, M)\n",[117,143,145],{"class":119,"line":144},5,[117,146,147],{},"  integer             :: i, j\n",[117,149,151],{"class":119,"line":150},6,[117,152,153],{"emptyLinePlaceholder":7},"\n",[117,155,157],{"class":119,"line":156},7,[117,158,159],{},"  ! Noncompliant: when i = N, A(i+1, j accesses A(1, j+1)\n",[117,161,163],{"class":119,"line":162},8,[117,164,165],{},"  !$omp parallel do private(i, j) shared(A)\n",[117,167,169],{"class":119,"line":168},9,[117,170,171],{},"  do j = 1, M - 1\n",[117,173,175],{"class":119,"line":174},10,[117,176,177],{},"    do i = 1, N\n",[117,179,181],{"class":119,"line":180},11,[117,182,183],{},"      A(i, j) = (A(i, j) + A(i+1, j)) \u002F 2.0\n",[117,185,187],{"class":119,"line":186},12,[117,188,189],{},"    end do\n",[117,191,193],{"class":119,"line":192},13,[117,194,195],{},"  end do\n",[117,197,199],{"class":119,"line":198},14,[117,200,201],{},"end subroutine example\n",[65,203,205],{"id":204},"compliant-solution","Compliant Solution",[42,207,208],{},"To comply with this rule and safety principles, the loop bounds must be strictly confined to ensure all subscripts remain within the current dimension's limits. This ensures that each thread operates only on its assigned contiguous memory segment.",[104,210,212],{"quality":211},"good",[108,213,215],{"className":110,"code":214,"language":112,"meta":113,"style":113},"subroutine example(A, N, M)\n  implicit none\n  integer, intent(in) :: N, M\n  real, intent(inout) :: A(N, M)\n  integer             :: i, j\n\n  ! Compliant: the row loop is restricted to N-1\n  ! ensuring A(i+1, j) never leaves the current column j\n  !$omp parallel do private(i, j) shared(A)\n  do j = 1, M - 1\n    do i = 1, N - 1\n      A(i, j) = (A(i, j) + A(i+1, j)) \u002F 2.0\n    end do\n  end do\nend subroutine example\n",[49,216,217,221,225,229,233,237,241,246,251,255,259,264,268,272,276],{"__ignoreMap":113},[117,218,219],{"class":119,"line":120},[117,220,123],{},[117,222,223],{"class":119,"line":126},[117,224,129],{},[117,226,227],{"class":119,"line":132},[117,228,135],{},[117,230,231],{"class":119,"line":138},[117,232,141],{},[117,234,235],{"class":119,"line":144},[117,236,147],{},[117,238,239],{"class":119,"line":150},[117,240,153],{"emptyLinePlaceholder":7},[117,242,243],{"class":119,"line":156},[117,244,245],{},"  ! Compliant: the row loop is restricted to N-1\n",[117,247,248],{"class":119,"line":162},[117,249,250],{},"  ! ensuring A(i+1, j) never leaves the current column j\n",[117,252,253],{"class":119,"line":168},[117,254,165],{},[117,256,257],{"class":119,"line":174},[117,258,171],{},[117,260,261],{"class":119,"line":180},[117,262,263],{},"    do i = 1, N - 1\n",[117,265,266],{"class":119,"line":186},[117,267,183],{},[117,269,270],{"class":119,"line":192},[117,271,189],{},[117,273,274],{"class":119,"line":198},[117,275,195],{},[117,277,279],{"class":119,"line":278},15,[117,280,201],{},[65,282,284],{"id":283},"risk-assessment","Risk Assessment",[42,286,287],{},"Writing to out-of-range subscripts can lead to arbitrary code execution, while reading from them can result in information disclosure. In parallel Fortran code, the specific risk is undefined behavior arising from non-deterministic data races, which can be further exacerbated if compilers optimize out safety checks by assuming such out-of-bounds accesses never occur.",[289,290,291,312],"table",{},[292,293,294],"thead",{},[295,296,297,300,302,304,306,308,310],"tr",{},[298,299],"th",{},[298,301],{},[298,303],{},[298,305],{},[298,307],{},[298,309],{},[298,311],{},[313,314,315,339],"tbody",{},[295,316,317,321,324,327,330,333,336],{},[318,319,320],"td",{},"Recommendation",[318,322,323],{},"Severity",[318,325,326],{},"Likelihood",[318,328,329],{},"Detectable",[318,331,332],{},"Repairable",[318,334,335],{},"Priority",[318,337,338],{},"Level",[295,340,341,344,347,350,353,355,361],{},[318,342,343],{},"CON04-F",[318,345,346],{},"High",[318,348,349],{},"Likely",[318,351,352],{},"Yes",[318,354,352],{},[318,356,357],{},[358,359,360],"strong",{},"P27",[318,362,363],{},[358,364,365],{},"L1",[367,368],"hr",{},[42,370,371,379,380,379,386],{},[372,373,375],"a",{"href":374},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002Fpre30-c",[376,377],"img",{"src":378},"attachments\u002F632324151\u002F638779599.png"," ",[372,381,383],{"href":382},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002F",[376,384],{"src":385},"attachments\u002F632324151\u002F638779600.png",[372,387,389],{"href":388},"\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp01-f",[376,390],{"src":391},"attachments\u002F632324151\u002F638779601.png",[65,393,395],{"id":394},"attachments","Attachments:",[397,398,402],"div",{"className":399,"align":401},[400],"greybox","left",[42,403,404,379,407,410,411,414,379,416,410,419,421,379,423,410],{},[376,405],{"alt":113,"src":406},"images\u002Ficons\u002Fbullet_blue.gif",[372,408,409],{"href":378},"button_arrow_left.png"," (image\u002Fpng)",[412,413],"br",{},[376,415],{"alt":113,"src":406},[372,417,418],{"href":385},"button_arrow_up.png",[412,420],{},[376,422],{"alt":113,"src":406},[372,424,425],{"href":391},"button_arrow_right.png",[427,428,429],"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":113,"searchDepth":126,"depth":126,"links":431},[432,433,434,435],{"id":67,"depth":126,"text":68},{"id":204,"depth":126,"text":205},{"id":283,"depth":126,"text":284},{"id":394,"depth":126,"text":395},"md",{},"\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con\u002Fcon04-f",{"title":33,"description":44},"9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F5.con04-f","mryBFRmzhUFcUGGKFEn32_IV0nmD_wchi4ZT9Q5c5_c",[443,447],{"title":444,"path":445,"stem":446,"children":-1},"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":448,"path":449,"stem":450,"children":-1},"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",[452],{"title":453,"path":454,"stem":455,"children":456},"Sei Cert Fortran Coding Standard","\u002Fsei-cert-fortran-coding-standard","9.sei-cert-fortran-coding-standard",[457,460,482,496,513,523,527,537,541,545,549,553,571,589,593,611,632],{"title":458,"path":454,"stem":459},"SEI CERT Fortran Coding Standard","9.sei-cert-fortran-coding-standard\u002F1.index",{"title":461,"path":462,"stem":463,"children":464},"Arrays (ARR)","\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr","9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F1.index",[465,466,470,474,478],{"title":461,"path":462,"stem":463},{"title":467,"path":468,"stem":469},"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":471,"path":472,"stem":473},"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":475,"path":476,"stem":477},"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":479,"path":480,"stem":481},"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":483,"path":484,"stem":485,"children":486},"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",[487,488,492],{"title":483,"path":484,"stem":485},{"title":489,"path":490,"stem":491},"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":493,"path":494,"stem":495},"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":497,"path":498,"stem":499,"children":500},"Concurrency (CON)","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F1.index",[501,502,506,510,511,512],{"title":497,"path":498,"stem":499},{"title":503,"path":504,"stem":505},"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":507,"path":508,"stem":509},"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":444,"path":445,"stem":446},{"title":33,"path":438,"stem":440},{"title":448,"path":449,"stem":450},{"title":514,"path":515,"stem":516,"children":517},"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",[518,519],{"title":514,"path":515,"stem":516},{"title":520,"path":521,"stem":522},"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":524,"path":525,"stem":526},"Execution Control (EXC)","\u002Fsei-cert-fortran-coding-standard\u002Fexecution-control-exc","9.sei-cert-fortran-coding-standard\u002F06.execution-control-exc",{"title":528,"path":529,"stem":530,"children":531},"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",[532,533],{"title":528,"path":529,"stem":530},{"title":534,"path":535,"stem":536},"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":538,"path":539,"stem":540},"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":542,"path":543,"stem":544},"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":546,"path":547,"stem":548},"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":550,"path":551,"stem":552},"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":554,"path":555,"stem":556,"children":557},"Miscellaneous (MSC)","\u002Fsei-cert-fortran-coding-standard\u002Fmiscellaneous-msc","9.sei-cert-fortran-coding-standard\u002F12.miscellaneous-msc\u002F1.index",[558,559,563,567],{"title":554,"path":555,"stem":556},{"title":560,"path":561,"stem":562},"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":564,"path":565,"stem":566},"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":568,"path":569,"stem":570},"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":572,"path":573,"stem":574,"children":575},"Procedures (PRC)","\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc","9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F1.index",[576,577,581,585],{"title":572,"path":573,"stem":574},{"title":578,"path":579,"stem":580},"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":582,"path":583,"stem":584},"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":586,"path":587,"stem":588},"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":590,"path":591,"stem":592},"Program Units (PRU)","\u002Fsei-cert-fortran-coding-standard\u002Fprogram-units-pru","9.sei-cert-fortran-coding-standard\u002F14.program-units-pru",{"title":594,"path":595,"stem":596,"children":597},"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",[598,599,603,607],{"title":594,"path":595,"stem":596},{"title":600,"path":601,"stem":602},"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":604,"path":605,"stem":606},"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":608,"path":609,"stem":610},"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":612,"path":613,"stem":614,"children":615},"Types (TYP)","\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F1.index",[616,617,620,624,628],{"title":612,"path":613,"stem":614},{"title":618,"path":388,"stem":619},"TYP01-F. Use Intrinsic Assignment for Character Entities","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F2.typ01-f",{"title":621,"path":622,"stem":623},"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":625,"path":626,"stem":627},"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":629,"path":630,"stem":631},"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":633,"path":634,"stem":635},"Acknowledgments","\u002Fsei-cert-fortran-coding-standard\u002Facknowledgements","9.sei-cert-fortran-coding-standard\u002Facknowledgements",1780320168000]