[{"data":1,"prerenderedAt":651},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr\u002Farr03-f":31,"surround-\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr\u002Farr03-f":457,"sidebar-sei-cert-fortran-coding-standard":466},[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":451,"meta":452,"navigation":7,"path":453,"seo":454,"stem":455,"__hash__":456},"content\u002F9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F4.arr03-f.md","ARR03-F. Specify array bounds when copying data to device memory",{"type":35,"value":36,"toc":445},"minimark",[37,41,45,48,61,64,69,85,205,209,212,295,299,302,381,384,407,411,441],[38,39,33],"h1",{"id":40},"arr03-f-specify-array-bounds-when-copying-data-to-device-memory",[42,43,44],"p",{},"Programmers shall explicitly specify array bounds or ranges when transferring data between host and device memory. This ensures sufficient memory is mapped and prevents undefined behavior.",[42,46,47],{},"In heterogeneous computing environments (e.g., using GPUs or other accelerators), arrays often must be explicitly moved from host to device. Omitting bounds can introduce several risks:",[49,50,51,55,58],"ul",{},[52,53,54],"li",{},"Insufficient data transfer: For assumed-size or partially known arrays, the compiler may copy too few elements, causing undefined behavior on the device.",[52,56,57],{},"Excessive data transfer: Copying the entire array when only a section is needed degrades performance.",[52,59,60],{},"Memory violations: Incorrect bounds may cause out-of-bounds access on the device, leading to illegal memory access or silent data corruption.",[42,62,63],{},"Programmers should not rely on compiler defaults, as optimizations may assume that out-of-bounds behavior does not occur, potentially bypassing safety checks.",[65,66,68],"h2",{"id":67},"noncompliant-code-example","Noncompliant Code Example",[42,70,71,72,76,77,80,81,84],{},"In this noncompliant example, a large array ",[73,74,75],"code",{},"data_buffer"," is used to store simulation results, but only a portion of it (defined by ",[73,78,79],{},"n"," ) is valid. The directive ",[73,82,83],{},"!$omp target data"," attempts to map the entire array to the device (e.g. GPU). This is inefficient and potentially dangerous if the entire buffer has not been appropriately initialized or allocated for the device's memory limits.",[86,87,89],"code-block",{"quality":88},"bad",[90,91,96],"pre",{"className":92,"code":93,"language":94,"meta":95,"style":95},"language-fortran shiki shiki-themes github-light-high-contrast github-dark-high-contrast monokai","program device_transfer\n  use iso_fortran_env, only: real64\n  implicit none\n  integer, parameter        :: max_size = 100000\n  real(real64), allocatable :: data_buffer(:)\n  integer, parameter        :: n = 1000\n  integer                   :: i\n\n  allocate(data_buffer(max_size))\n\n  data_buffer(1:n) = [(real(i, real64), i = 1, n)]\n\n  ! Noncompliant: Maps the entire buffer instead of the actual used range (n elements)\n  !$omp target map(to: data_buffer)\n    ! Accelerator operations here\n  !$omp end\n\nend program\n","fortran","",[73,97,98,106,112,118,124,130,136,142,148,154,159,165,170,176,182,188,194,199],{"__ignoreMap":95},[99,100,103],"span",{"class":101,"line":102},"line",1,[99,104,105],{},"program device_transfer\n",[99,107,109],{"class":101,"line":108},2,[99,110,111],{},"  use iso_fortran_env, only: real64\n",[99,113,115],{"class":101,"line":114},3,[99,116,117],{},"  implicit none\n",[99,119,121],{"class":101,"line":120},4,[99,122,123],{},"  integer, parameter        :: max_size = 100000\n",[99,125,127],{"class":101,"line":126},5,[99,128,129],{},"  real(real64), allocatable :: data_buffer(:)\n",[99,131,133],{"class":101,"line":132},6,[99,134,135],{},"  integer, parameter        :: n = 1000\n",[99,137,139],{"class":101,"line":138},7,[99,140,141],{},"  integer                   :: i\n",[99,143,145],{"class":101,"line":144},8,[99,146,147],{"emptyLinePlaceholder":7},"\n",[99,149,151],{"class":101,"line":150},9,[99,152,153],{},"  allocate(data_buffer(max_size))\n",[99,155,157],{"class":101,"line":156},10,[99,158,147],{"emptyLinePlaceholder":7},[99,160,162],{"class":101,"line":161},11,[99,163,164],{},"  data_buffer(1:n) = [(real(i, real64), i = 1, n)]\n",[99,166,168],{"class":101,"line":167},12,[99,169,147],{"emptyLinePlaceholder":7},[99,171,173],{"class":101,"line":172},13,[99,174,175],{},"  ! Noncompliant: Maps the entire buffer instead of the actual used range (n elements)\n",[99,177,179],{"class":101,"line":178},14,[99,180,181],{},"  !$omp target map(to: data_buffer)\n",[99,183,185],{"class":101,"line":184},15,[99,186,187],{},"    ! Accelerator operations here\n",[99,189,191],{"class":101,"line":190},16,[99,192,193],{},"  !$omp end\n",[99,195,197],{"class":101,"line":196},17,[99,198,147],{"emptyLinePlaceholder":7},[99,200,202],{"class":101,"line":201},18,[99,203,204],{},"end program\n",[65,206,208],{"id":207},"compliant-solution","Compliant Solution",[42,210,211],{},"In this compliant solution, the programmer uses an array section to specify the exact bounds of the data to be transferred. This ensures that only the required memory is mapped to the device, providing enough storage for objects while avoiding the ambiguity of undefined behavior.",[86,213,215],{"quality":214},"good",[90,216,218],{"className":92,"code":217,"language":94,"meta":95,"style":95},"program device_transfer\n  use iso_fortran_env, only: real64\n  implicit none\n  integer, parameter        :: max_size = 100000\n  real(real64), allocatable :: data_buffer(:)\n  integer, parameter        :: n = 1000\n  integer                   :: i\n\n  allocate(data_buffer(max_size))\n\n  data_buffer(1:n) = [(real(i, real64), i = 1, n)]\n\n  ! Compliant: Explicitly specifies the range for the transfer\n  !$omp target map(to: data_buffer(1:n))\n    ! Accelerator operations here\n  !$omp end target\n\nend program\n",[73,219,220,224,228,232,236,240,244,248,252,256,260,264,268,273,278,282,287,291],{"__ignoreMap":95},[99,221,222],{"class":101,"line":102},[99,223,105],{},[99,225,226],{"class":101,"line":108},[99,227,111],{},[99,229,230],{"class":101,"line":114},[99,231,117],{},[99,233,234],{"class":101,"line":120},[99,235,123],{},[99,237,238],{"class":101,"line":126},[99,239,129],{},[99,241,242],{"class":101,"line":132},[99,243,135],{},[99,245,246],{"class":101,"line":138},[99,247,141],{},[99,249,250],{"class":101,"line":144},[99,251,147],{"emptyLinePlaceholder":7},[99,253,254],{"class":101,"line":150},[99,255,153],{},[99,257,258],{"class":101,"line":156},[99,259,147],{"emptyLinePlaceholder":7},[99,261,262],{"class":101,"line":161},[99,263,164],{},[99,265,266],{"class":101,"line":167},[99,267,147],{"emptyLinePlaceholder":7},[99,269,270],{"class":101,"line":172},[99,271,272],{},"  ! Compliant: Explicitly specifies the range for the transfer\n",[99,274,275],{"class":101,"line":178},[99,276,277],{},"  !$omp target map(to: data_buffer(1:n))\n",[99,279,280],{"class":101,"line":184},[99,281,187],{},[99,283,284],{"class":101,"line":190},[99,285,286],{},"  !$omp end target\n",[99,288,289],{"class":101,"line":196},[99,290,147],{"emptyLinePlaceholder":7},[99,292,293],{"class":101,"line":201},[99,294,204],{},[65,296,298],{"id":297},"risk-assessment","Risk Assessment",[42,300,301],{},"Failure to specify array bounds when mapping data to a device can lead to memory corruption on the accelerator, performance bottlenecks, or program termination.",[303,304,305,326],"table",{},[306,307,308],"thead",{},[309,310,311,314,316,318,320,322,324],"tr",{},[312,313],"th",{},[312,315],{},[312,317],{},[312,319],{},[312,321],{},[312,323],{},[312,325],{},[327,328,329,353],"tbody",{},[309,330,331,335,338,341,344,347,350],{},[332,333,334],"td",{},"Recommendation",[332,336,337],{},"Severity",[332,339,340],{},"Likelihood",[332,342,343],{},"Detectable",[332,345,346],{},"Repairable",[332,348,349],{},"Priority",[332,351,352],{},"Level",[309,354,355,358,361,364,367,370,376],{},[332,356,357],{},"ARR03-F",[332,359,360],{},"High",[332,362,363],{},"Probable",[332,365,366],{},"No",[332,368,369],{},"Yes",[332,371,372],{},[373,374,375],"strong",{},"P27",[332,377,378],{},[373,379,380],{},"L1",[382,383],"hr",{},[42,385,386,394,395,394,401],{},[387,388,390],"a",{"href":389},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002Fpre30-c",[391,392],"img",{"src":393},"attachments\u002F629047345\u002F638779619.png"," ",[387,396,398],{"href":397},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002F",[391,399],{"src":400},"attachments\u002F629047345\u002F638779620.png",[387,402,404],{"href":403},"\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp01-f",[391,405],{"src":406},"attachments\u002F629047345\u002F638779621.png",[65,408,410],{"id":409},"attachments","Attachments:",[412,413,417],"div",{"className":414,"align":416},[415],"greybox","left",[42,418,419,394,422,425,426,429,394,431,425,434,436,394,438,425],{},[391,420],{"alt":95,"src":421},"images\u002Ficons\u002Fbullet_blue.gif",[387,423,424],{"href":393},"button_arrow_left.png"," (image\u002Fpng)",[427,428],"br",{},[391,430],{"alt":95,"src":421},[387,432,433],{"href":400},"button_arrow_up.png",[427,435],{},[391,437],{"alt":95,"src":421},[387,439,440],{"href":406},"button_arrow_right.png",[442,443,444],"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":95,"searchDepth":108,"depth":108,"links":446},[447,448,449,450],{"id":67,"depth":108,"text":68},{"id":207,"depth":108,"text":208},{"id":297,"depth":108,"text":298},{"id":409,"depth":108,"text":410},"md",{},"\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr\u002Farr03-f",{"title":33,"description":44},"9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F4.arr03-f","Ei0TlNEEe4p0dEMbkRdQW9WfOxJ3Ote6M1Jxr6ob66o",[458,462],{"title":459,"path":460,"stem":461,"children":-1},"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":463,"path":464,"stem":465,"children":-1},"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",[467],{"title":468,"path":469,"stem":470,"children":471},"Sei Cert Fortran Coding Standard","\u002Fsei-cert-fortran-coding-standard","9.sei-cert-fortran-coding-standard",[472,475,488,502,528,538,542,552,556,560,564,568,586,604,608,626,647],{"title":473,"path":469,"stem":474},"SEI CERT Fortran Coding Standard","9.sei-cert-fortran-coding-standard\u002F1.index",{"title":476,"path":477,"stem":478,"children":479},"Arrays (ARR)","\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr","9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F1.index",[480,481,485,486,487],{"title":476,"path":477,"stem":478},{"title":482,"path":483,"stem":484},"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":459,"path":460,"stem":461},{"title":33,"path":453,"stem":455},{"title":463,"path":464,"stem":465},{"title":489,"path":490,"stem":491,"children":492},"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",[493,494,498],{"title":489,"path":490,"stem":491},{"title":495,"path":496,"stem":497},"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":499,"path":500,"stem":501},"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":503,"path":504,"stem":505,"children":506},"Concurrency (CON)","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F1.index",[507,508,512,516,520,524],{"title":503,"path":504,"stem":505},{"title":509,"path":510,"stem":511},"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":513,"path":514,"stem":515},"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":517,"path":518,"stem":519},"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":521,"path":522,"stem":523},"CON04-F. Do not use out-of-dimension subscripts in multithreaded code","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con\u002Fcon04-f","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F5.con04-f",{"title":525,"path":526,"stem":527},"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",{"title":529,"path":530,"stem":531,"children":532},"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",[533,534],{"title":529,"path":530,"stem":531},{"title":535,"path":536,"stem":537},"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":539,"path":540,"stem":541},"Execution Control (EXC)","\u002Fsei-cert-fortran-coding-standard\u002Fexecution-control-exc","9.sei-cert-fortran-coding-standard\u002F06.execution-control-exc",{"title":543,"path":544,"stem":545,"children":546},"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",[547,548],{"title":543,"path":544,"stem":545},{"title":549,"path":550,"stem":551},"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":553,"path":554,"stem":555},"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":557,"path":558,"stem":559},"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":561,"path":562,"stem":563},"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":565,"path":566,"stem":567},"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":569,"path":570,"stem":571,"children":572},"Miscellaneous (MSC)","\u002Fsei-cert-fortran-coding-standard\u002Fmiscellaneous-msc","9.sei-cert-fortran-coding-standard\u002F12.miscellaneous-msc\u002F1.index",[573,574,578,582],{"title":569,"path":570,"stem":571},{"title":575,"path":576,"stem":577},"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":579,"path":580,"stem":581},"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":583,"path":584,"stem":585},"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":587,"path":588,"stem":589,"children":590},"Procedures (PRC)","\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc","9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F1.index",[591,592,596,600],{"title":587,"path":588,"stem":589},{"title":593,"path":594,"stem":595},"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":597,"path":598,"stem":599},"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":601,"path":602,"stem":603},"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":605,"path":606,"stem":607},"Program Units (PRU)","\u002Fsei-cert-fortran-coding-standard\u002Fprogram-units-pru","9.sei-cert-fortran-coding-standard\u002F14.program-units-pru",{"title":609,"path":610,"stem":611,"children":612},"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",[613,614,618,622],{"title":609,"path":610,"stem":611},{"title":615,"path":616,"stem":617},"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":619,"path":620,"stem":621},"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":623,"path":624,"stem":625},"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":627,"path":628,"stem":629,"children":630},"Types (TYP)","\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F1.index",[631,632,635,639,643],{"title":627,"path":628,"stem":629},{"title":633,"path":403,"stem":634},"TYP01-F. Use Intrinsic Assignment for Character Entities","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F2.typ01-f",{"title":636,"path":637,"stem":638},"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":640,"path":641,"stem":642},"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":644,"path":645,"stem":646},"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":648,"path":649,"stem":650},"Acknowledgments","\u002Fsei-cert-fortran-coding-standard\u002Facknowledgements","9.sei-cert-fortran-coding-standard\u002Facknowledgements",1780320167195]