File1: #include<iostream>\n#include<cassert>\nusing namespace std;\n\nclass A {\npublic:\nstatic int counter;\nstatic int pcounter;\n#pragma omp threadprivate(pcounter)\n};\n\nint A::counter=0;\nint A::pcounter=0;\n\nA a;\n\nvoid foo()\n{\na.counter++;\na.pcounter++;\n}\n\nint main()\n{\n#pragma omp parallel\n{\nfoo();\n}\nassert (A::pcounter == 1);\ncout<<A::counter <<" "<< A::pcounter<<endl;\nreturn 0;\n}
File2: program DRB086_static_data_member_orig_yes\n    use omp_lib\n    use DRB086\n    implicit none\n\n    type(A) :: c\n    c = A(0,0)\n\n    !$omp parallel\n    call foo()\n    !$omp end parallel\n\n    print *,counter,pcounter\nend program