Changeset 4649 for palm/trunk/SOURCE/posix_interface_mod.f90
- Timestamp:
- Aug 25, 2020 12:11:17 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/posix_interface_mod.f90
r4628 r4649 1 1 !> @file posix_interface_mod.f90 2 !------------------------------------------------------------------------------ !2 !--------------------------------------------------------------------------------------------------! 3 3 ! This file is part of the PALM model system. 4 4 ! … … 15 15 ! 16 16 ! Copyright 1997-2020 Leibniz Universitaet Hannover 17 ! -------------------------------------------------------------------------------------------------! 17 !--------------------------------------------------------------------------------------------------! 18 ! 18 19 ! 19 20 ! Current revisions: … … 24 25 ! ----------------- 25 26 ! $Id$ 26 ! extensions required for MPI-I/O of particle data to restart files 27 ! 27 ! File re-formatted to follow the PALM coding standard 28 ! 29 ! 30 ! 4628 2020-07-29 07:23:03Z raasch 31 ! Extensions required for MPI-I/O of particle data to restart files 32 ! 28 33 ! 4495 2020-04-13 20:11:20Z raasch 29 34 ! Initial version (K. Ketelsen) 30 35 ! 31 ! 32 ! 36 ! 37 !--------------------------------------------------------------------------------------------------! 33 38 ! Description: 34 39 ! ------------ 35 !> Interface to some POSIX system calls, mainly used for read/write of restart files 36 !> in non-parallelmode in MPI-IO compatible format.40 !> Interface to some POSIX system calls, mainly used for read/write of restart files in non-parallel 41 !> mode in MPI-IO compatible format. 37 42 !--------------------------------------------------------------------------------------------------! 38 43 MODULE posix_interface … … 50 55 ! 51 56 !-- Definitions copied from C include file fcntl.h 52 INTEGER, PARAMETER :: O_RDONLY = 053 INTEGER, PARAMETER :: O_WRONLY = 154 INTEGER, PARAMETER :: O_RDWR = 255 INTEGER, PARAMETER :: O_CREAT = 64 !> 0100 octal56 INTEGER, PARAMETER :: SEEK_SET = 057 INTEGER, PARAMETER :: o_creat = 64 !< 0100 octal 58 INTEGER, PARAMETER :: o_rdonly = 0 !< 59 INTEGER, PARAMETER :: o_rdwr = 2 !< 60 INTEGER, PARAMETER :: o_wronly = 1 !< 61 INTEGER, PARAMETER :: seek_set = 0 !< 57 62 58 63 … … 63 68 USE ISO_C_BINDING 64 69 IMPLICIT NONE 65 CHARACTER(KIND=C_CHAR), DIMENSION(128) :: pathname 66 INTEGER(KIND=C_INT), VALUE :: flags 67 INTEGER(KIND=C_INT), VALUE :: mode 70 CHARACTER(KIND=C_CHAR), DIMENSION(128) :: pathname !< 71 INTEGER(KIND=C_INT), VALUE :: flags !< 72 INTEGER(KIND=C_INT), VALUE :: mode !< 68 73 END FUNCTION C_OPEN 69 74 END INTERFACE … … 73 78 USE ISO_C_BINDING 74 79 IMPLICIT NONE 75 INTEGER(KIND=C_INT), VALUE :: fd76 INTEGER(KIND=C_SIZE_T), VALUE :: offset77 INTEGER(KIND=C_INT), VALUE :: whence80 INTEGER(KIND=C_INT), VALUE :: fd !< 81 INTEGER(KIND=C_SIZE_T), VALUE :: offset !< 82 INTEGER(KIND=C_INT), VALUE :: whence !< 78 83 END FUNCTION C_LSEEK 79 84 END INTERFACE … … 86 91 USE ISO_C_BINDING 87 92 IMPLICIT NONE 88 INTEGER(KIND=C_INT), VALUE :: fd89 TYPE(C_PTR), VALUE :: buf90 INTEGER(KIND=C_SIZE_T), VALUE :: nr_byte93 INTEGER(KIND=C_INT), VALUE :: fd !< 94 INTEGER(KIND=C_SIZE_T), VALUE :: nr_byte !< 95 TYPE(C_PTR), VALUE :: buf !< 91 96 END FUNCTION C_READ 92 97 END INTERFACE … … 96 101 USE ISO_C_BINDING 97 102 IMPLICIT NONE 98 INTEGER(KIND=C_INT), VALUE :: fd99 TYPE(C_PTR), VALUE :: buf100 INTEGER(KIND=C_SIZE_T), VALUE :: nr_byte103 INTEGER(KIND=C_INT), VALUE :: fd !< 104 INTEGER(KIND=C_SIZE_T), VALUE :: nr_byte !< 105 TYPE(C_PTR), VALUE :: buf !< 101 106 END FUNCTION C_WRITE 102 107 END INTERFACE … … 106 111 USE ISO_C_BINDING 107 112 IMPLICIT NONE 108 INTEGER(KIND=C_INT), VALUE :: fd113 INTEGER(KIND=C_INT), VALUE :: fd !< 109 114 END FUNCTION C_CLOSE 110 115 END INTERFACE … … 150 155 END INTERFACE posix_write 151 156 152 PUBLIC posix_close, posix_lseek, posix_open, posix_read, posix_write 157 PUBLIC posix_close, & 158 posix_lseek, & 159 posix_open, & 160 posix_read, & 161 posix_write 153 162 154 163 CONTAINS … … 158 167 IMPLICIT NONE 159 168 160 CHARACTER(LEN=*), INTENT(IN) :: file_name 161 CHARACTER(LEN=1), DIMENSION(:), POINTER :: f_string 162 CHARACTER(LEN=128), TARGET :: lo_file_name 163 164 INTEGER(C_INT) :: fd 165 INTEGER(C_INT) :: flags 166 INTEGER(C_INT) :: name_len 167 INTEGER(C_INT) :: mode 168 INTEGER, DIMENSION(1) :: bufshape 169 170 LOGICAL, INTENT(IN) :: rd_flag 171 172 TYPE(C_PTR) :: ptr 169 CHARACTER(LEN=*), INTENT(IN) :: file_name !< 170 CHARACTER(LEN=1), DIMENSION(:), POINTER :: f_string !< 171 CHARACTER(LEN=128), TARGET :: lo_file_name !< 172 173 INTEGER(C_INT) :: fd !< 174 INTEGER(C_INT) :: flags !< 175 INTEGER(C_INT) :: name_len !< 176 INTEGER(C_INT) :: mode !< 177 INTEGER, DIMENSION(1) :: bufshape !< 178 179 LOGICAL, INTENT(IN) :: rd_flag !< 180 181 TYPE(C_PTR) :: ptr !< 173 182 174 183 … … 177 186 !-- different FORTRAN compiler 178 187 name_len = LEN( TRIM( file_name ) ) + 1 179 lo_file_name = TRIM( file_name ) // CHAR( 0)188 lo_file_name = TRIM( file_name ) // CHAR( 0 ) 180 189 ptr = C_LOC( lo_file_name(1:1) ) 181 190 bufshape(1) = name_len … … 185 194 186 195 IF ( rd_flag ) THEN 187 flags = O_RDONLY188 fd = C_OPEN (f_string, flags, mode) ! Open for reading196 flags = o_rdonly 197 fd = C_OPEN( f_string, flags, mode ) ! Open for reading 189 198 ELSE 190 flags = O_WRONLY + O_CREAT191 fd = C_OPEN (f_string, flags, mode) ! Open for writing199 flags = o_wronly + o_creat 200 fd = C_OPEN( f_string, flags, mode ) ! Open for writing 192 201 ENDIF 193 202 … … 202 211 IMPLICIT NONE 203 212 204 INTEGER, INTENT(IN) :: fid 205 INTEGER(KIND=C_INT) :: my_fid 206 INTEGER(KIND=C_SIZE_T), INTENT(IN) :: offset 207 INTEGER(KIND=C_SIZE_T) :: retval 208 INTEGER(KIND=C_INT) :: whence 213 INTEGER, INTENT(IN) :: fid !< 214 INTEGER(KIND=C_INT) :: my_fid !< 215 INTEGER(KIND=C_SIZE_T), INTENT(IN) :: offset !< 216 INTEGER(KIND=C_SIZE_T) :: retval !< 217 INTEGER(KIND=C_INT) :: whence !< 209 218 210 219 211 220 my_fid = fid 212 whence = SEEK_SET221 whence = seek_set 213 222 214 223 retval = C_LSEEK( my_fid, offset, whence ) … … 222 231 IMPLICIT NONE 223 232 224 INTEGER(KIND=iwp), INTENT(IN), TARGET, DIMENSION(:) :: data 225 INTEGER, INTENT(IN) :: fid 226 INTEGER :: nr_byte 227 INTEGER, INTENT(IN) :: nw 228 229 TYPE(C_PTR) :: buf 233 INTEGER :: nr_byte !< 234 INTEGER, INTENT(IN) :: fid !< 235 INTEGER, INTENT(IN) :: nw !< 236 INTEGER(KIND=iwp), INTENT(IN), TARGET, DIMENSION(:) :: data !< 237 TYPE(C_PTR) :: buf !< 230 238 231 239 … … 243 251 IMPLICIT NONE 244 252 245 INTEGER(KIND=iwp), INTENT(IN), TARGET, DIMENSION(:,:) :: data 246 INTEGER, INTENT(IN) :: fid 247 INTEGER :: nr_byte 248 INTEGER, INTENT(IN) :: nw 249 250 TYPE(C_PTR) :: buf 253 INTEGER :: nr_byte !< 254 INTEGER, INTENT(IN) :: fid !< 255 INTEGER, INTENT(IN) :: nw !< 256 INTEGER(KIND=iwp), INTENT(IN), TARGET, DIMENSION(:,:) :: data !< 257 TYPE(C_PTR) :: buf !< 251 258 252 259 … … 264 271 IMPLICIT NONE 265 272 266 INTEGER(KIND=isp), INTENT(IN), TARGET, DIMENSION(:,:,:) :: data !< 267 INTEGER, INTENT(IN) :: fid !< 268 INTEGER :: nr_byte !< 269 INTEGER, INTENT(IN) :: nw !< 270 271 TYPE(C_PTR) :: buf !< 273 INTEGER :: nr_byte !< 274 INTEGER, INTENT(IN) :: fid !< 275 INTEGER, INTENT(IN) :: nw !< 276 INTEGER(KIND=isp), INTENT(IN), TARGET, DIMENSION(:,:,:) :: data !< 277 TYPE(C_PTR) :: buf !< 272 278 273 279 … … 285 291 IMPLICIT NONE 286 292 287 INTEGER(KIND=idp), INTENT(IN), TARGET, DIMENSION(:,:,:) :: data !< 288 INTEGER, INTENT(IN) :: fid !< 289 INTEGER :: nr_byte !< 290 INTEGER, INTENT(IN) :: nw !< 291 292 TYPE(C_PTR) :: buf !< 293 INTEGER :: nr_byte !< 294 INTEGER, INTENT(IN) :: fid !< 295 INTEGER, INTENT(IN) :: nw !< 296 INTEGER(KIND=idp), INTENT(IN), TARGET, DIMENSION(:,:,:) :: data !< 297 TYPE(C_PTR) :: buf !< 293 298 294 299 … … 306 311 IMPLICIT NONE 307 312 308 INTEGER (KIND=C_SIZE_T), INTENT(IN), TARGET, DIMENSION(:) :: data309 INTEGER, INTENT(IN) :: fid 310 INTEGER :: nr_byte311 INTEGER , INTENT(IN) :: nw312 TYPE(C_PTR) :: buf 313 INTEGER :: nr_byte !< 314 INTEGER, INTENT(IN) :: fid !< 315 INTEGER, INTENT(IN) :: nw !< 316 INTEGER(KIND=C_SIZE_T), INTENT(IN), TARGET, DIMENSION(:) :: data !< 317 TYPE(C_PTR) :: buf !< 313 318 314 319 … … 326 331 IMPLICIT NONE 327 332 328 INTEGER , INTENT(IN) :: fid329 INTEGER :: nr_byte330 INTEGER, INTENT(IN) :: nw 331 332 REAL(KIND=wp), INTENT(IN), TARGET, DIMENSION(:) :: data 333 334 TYPE(C_PTR) :: buf 333 INTEGER :: nr_byte !< 334 INTEGER, INTENT(IN) :: fid !< 335 INTEGER, INTENT(IN) :: nw !< 336 337 REAL(KIND=wp), INTENT(IN), TARGET, DIMENSION(:) :: data !< 338 339 TYPE(C_PTR) :: buf !< 335 340 336 341 … … 348 353 IMPLICIT NONE 349 354 350 INTEGER , INTENT(IN) :: fid351 INTEGER :: nr_byte352 INTEGER, INTENT(IN) :: nw 353 354 REAL(KIND=wp), INTENT(INOUT), TARGET, DIMENSION(:,:) :: data 355 356 TYPE(C_PTR) :: buf 355 INTEGER :: nr_byte !< 356 INTEGER, INTENT(IN) :: fid !< 357 INTEGER, INTENT(IN) :: nw !< 358 359 REAL(KIND=wp), INTENT(INOUT), TARGET, DIMENSION(:,:) :: data !< 360 361 TYPE(C_PTR) :: buf !< 357 362 358 363 … … 370 375 IMPLICIT NONE 371 376 372 INTEGER , INTENT(IN) :: fid373 INTEGER :: nr_byte374 INTEGER, INTENT(IN) :: nw 375 376 REAL(KIND=wp), INTENT(INOUT), TARGET, DIMENSION(:,:,:) :: data 377 378 TYPE(C_PTR) :: buf 377 INTEGER :: nr_byte !< 378 INTEGER, INTENT(IN) :: fid !< 379 INTEGER, INTENT(IN) :: nw !< 380 381 REAL(KIND=wp), INTENT(INOUT), TARGET, DIMENSION(:,:,:) :: data !< 382 383 TYPE(C_PTR) :: buf !< 379 384 380 385 … … 392 397 IMPLICIT NONE 393 398 394 INTEGER, INTENT(IN) :: fid 395 INTEGER (KIND=C_INT) :: my_fid396 INTEGER , INTENT(IN) :: nb397 INTEGER(KIND=C_SIZE_T) :: nr_byte 398 INTEGER(KIND=C_SIZE_T) :: retval 399 400 TYPE(C_PTR) :: buf 399 INTEGER, INTENT(IN) :: fid !< 400 INTEGER , INTENT(IN) :: nb !< 401 INTEGER(KIND=C_INT) :: my_fid !< 402 INTEGER(KIND=C_SIZE_T) :: nr_byte !< 403 INTEGER(KIND=C_SIZE_T) :: retval !< 404 405 TYPE(C_PTR) :: buf !< 401 406 402 407 … … 407 412 408 413 ! 409 !-- The posix standard says that i s not guaranteed that all bytes are read in one read system call.410 !-- If retval is not equal to nr_byte, another system call has to be issued.414 !-- The posix standard says that it is not guaranteed that all bytes are read in one read system 415 !-- call. If retval is not equal to nr_byte, another system call has to be issued. 411 416 !-- However, in all Unix distributions it is commonly accepted, that all bytes are read in one call 412 417 !-- during during disk-IO. Therefore, here is only an error query and no reading in a while loop. 413 418 IF ( retval /= nr_byte ) THEN 414 WRITE( 6,*) 'Number of bytes read does not match the number of requested bytes'419 WRITE( 6, * ) 'Number of bytes read does not match the number of requested bytes' 415 420 CALL abort 416 421 ENDIF … … 424 429 IMPLICIT NONE 425 430 426 CHARACTER(LEN=*), DIMENSION(:) :: data 427 CHARACTER(LEN=LEN(data)), TARGET :: data_buf 428 429 INTEGER , INTENT(IN) :: fid430 INTEGER :: i431 INTEGER(KIND=C_INT) :: my_fid 432 INTEGER(KIND=C_SIZE_T) :: name_len 433 INTEGER(KIND=C_SIZE_T) :: retval 434 435 TYPE(C_PTR) :: ptr 431 CHARACTER(LEN=*), DIMENSION(:) :: data !< 432 CHARACTER(LEN=LEN(data)), TARGET :: data_buf !< 433 434 INTEGER :: i !< 435 INTEGER, INTENT(IN) :: fid !< 436 INTEGER(KIND=C_INT) :: my_fid !< 437 INTEGER(KIND=C_SIZE_T) :: name_len !< 438 INTEGER(KIND=C_SIZE_T) :: retval !< 439 440 TYPE(C_PTR) :: ptr !< 436 441 437 442 … … 440 445 DO i = 1, SIZE( data ) 441 446 data_buf = data(i) 442 name_len = LEN( data(i))447 name_len = LEN( data(i) ) 443 448 ptr = C_LOC( data_buf(1:1) ) 444 449 retval = C_READ( my_fid, ptr, name_len ) … … 454 459 IMPLICIT NONE 455 460 456 INTEGER, INTENT(IN) :: fid 457 INTEGER (KIND=C_INT) :: my_fid458 INTEGER(KIND=C_ SIZE_T) :: nr_byte459 INTEGER , INTENT(IN) :: nw460 INTEGER(KIND=C_SIZE_T) :: retval 461 462 INTEGER(KIND=iwp), INTENT(IN), TARGET, DIMENSION(:) :: data 463 464 TYPE(C_PTR) :: buf 461 INTEGER, INTENT(IN) :: fid !< 462 INTEGER ,INTENT(IN) :: nw !< 463 INTEGER(KIND=C_INT) :: my_fid !< 464 INTEGER(KIND=C_SIZE_T) :: nr_byte !< 465 INTEGER(KIND=C_SIZE_T) :: retval !< 466 467 INTEGER(KIND=iwp), INTENT(IN), TARGET, DIMENSION(:) :: data !< 468 469 TYPE(C_PTR) :: buf !< 465 470 466 471 … … 479 484 IMPLICIT NONE 480 485 481 INTEGER , INTENT(IN) :: fid482 INTEGER :: nr_byte483 INTEGER, INTENT(IN) :: nw 484 485 INTEGER(KIND=iwp), INTENT(IN), TARGET, DIMENSION(:,:) :: data 486 487 TYPE(C_PTR) :: buf 486 INTEGER :: nr_byte !< 487 INTEGER, INTENT(IN) :: fid !< 488 INTEGER, INTENT(IN) :: nw !< 489 490 INTEGER(KIND=iwp), INTENT(IN), TARGET, DIMENSION(:,:) :: data !< 491 492 TYPE(C_PTR) :: buf !< 488 493 489 494 … … 501 506 IMPLICIT NONE 502 507 503 INTEGER , INTENT(IN) :: fid!<504 INTEGER :: nr_byte!<505 INTEGER, INTENT(IN) :: nw 506 507 INTEGER(KIND=isp), INTENT(IN), TARGET, DIMENSION(:,:,:) :: data 508 509 TYPE(C_PTR) :: buf 508 INTEGER :: nr_byte !< 509 INTEGER, INTENT(IN) :: fid !< 510 INTEGER, INTENT(IN) :: nw !< 511 512 INTEGER(KIND=isp), INTENT(IN), TARGET, DIMENSION(:,:,:) :: data !< 513 514 TYPE(C_PTR) :: buf !< 510 515 511 516 … … 523 528 IMPLICIT NONE 524 529 525 INTEGER , INTENT(IN) :: fid!<526 INTEGER :: nr_byte!<527 INTEGER, INTENT(IN) :: nw 528 529 INTEGER(KIND=idp), INTENT(IN), TARGET, DIMENSION(:,:,:) :: data 530 531 TYPE(C_PTR) :: buf 530 INTEGER :: nr_byte !< 531 INTEGER, INTENT(IN) :: fid !< 532 INTEGER, INTENT(IN) :: nw !< 533 534 INTEGER(KIND=idp), INTENT(IN), TARGET, DIMENSION(:,:,:) :: data !< 535 536 TYPE(C_PTR) :: buf !< 532 537 533 538 … … 545 550 IMPLICIT NONE 546 551 547 INTEGER , INTENT(IN) :: fid548 INTEGER :: nr_byte549 INTEGER, INTENT(IN) :: nw 550 551 INTEGER(KIND=C_SIZE_T), INTENT(IN), TARGET, DIMENSION(:) :: data 552 553 TYPE(C_PTR) :: buf 552 INTEGER :: nr_byte !< 553 INTEGER, INTENT(IN) :: fid !< 554 INTEGER, INTENT(IN) :: nw !< 555 556 INTEGER(KIND=C_SIZE_T), INTENT(IN), TARGET, DIMENSION(:) :: data !< 557 558 TYPE(C_PTR) :: buf !< 554 559 555 560 … … 567 572 IMPLICIT NONE 568 573 569 INTEGER , INTENT(IN) :: fid570 INTEGER :: nr_byte571 INTEGER, INTENT(IN) :: nw 572 573 REAL(KIND=wp), INTENT(IN), TARGET, DIMENSION(:) :: data 574 575 TYPE(C_PTR) :: buf 574 INTEGER :: nr_byte !< 575 INTEGER, INTENT(IN) :: fid !< 576 INTEGER, INTENT(IN) :: nw !< 577 578 REAL(KIND=wp), INTENT(IN), TARGET, DIMENSION(:) :: data !< 579 580 TYPE(C_PTR) :: buf !< 576 581 577 582 … … 589 594 IMPLICIT NONE 590 595 591 INTEGER , INTENT(IN) :: fid592 INTEGER :: nr_byte593 INTEGER, INTENT(IN) :: nw 594 595 REAL(KIND=wp), INTENT(INOUT), TARGET, DIMENSION(:,:) :: data 596 597 TYPE(C_PTR) :: buf 596 INTEGER :: nr_byte !< 597 INTEGER, INTENT(IN) :: fid !< 598 INTEGER, INTENT(IN) :: nw !< 599 600 REAL(KIND=wp), INTENT(INOUT), TARGET, DIMENSION(:,:) :: data !< 601 602 TYPE(C_PTR) :: buf !< 598 603 599 604 … … 611 616 IMPLICIT NONE 612 617 613 INTEGER , INTENT(IN) :: fid614 INTEGER :: nr_byte615 INTEGER, INTENT(IN) :: nw 616 617 REAL(KIND=wp), INTENT(INOUT), TARGET, DIMENSION(:,:,:) :: data 618 619 TYPE(C_PTR) :: buf 618 INTEGER :: nr_byte !< 619 INTEGER, INTENT(IN) :: fid !< 620 INTEGER, INTENT(IN) :: nw !< 621 622 REAL(KIND=wp), INTENT(INOUT), TARGET, DIMENSION(:,:,:) :: data !< 623 624 TYPE(C_PTR) :: buf !< 620 625 621 626 … … 633 638 IMPLICIT NONE 634 639 635 INTEGER, INTENT(IN) :: fid 636 INTEGER (KIND=C_INT) :: my_fid637 INTEGER , INTENT(IN) :: nb638 INTEGER(KIND=C_SIZE_T) :: nr_byte 639 INTEGER(KIND=C_SIZE_T) :: retval 640 641 TYPE(C_PTR) :: buf 640 INTEGER, INTENT(IN) :: fid !< 641 INTEGER , INTENT(IN) :: nb !< 642 INTEGER(KIND=C_INT) :: my_fid !< 643 INTEGER(KIND=C_SIZE_T) :: nr_byte !< 644 INTEGER(KIND=C_SIZE_T) :: retval !< 645 646 TYPE(C_PTR) :: buf !< 642 647 643 648 … … 648 653 649 654 IF ( retval /= nr_byte ) THEN 650 WRITE( 6,*) 'Number of bytes to write does not match the number of requested bytes'655 WRITE( 6, * ) 'Number of bytes to write does not match the number of requested bytes' 651 656 CALL abort 652 657 ENDIF … … 660 665 IMPLICIT NONE 661 666 662 CHARACTER(LEN=*), DIMENSION(:) :: data 663 664 CHARACTER(LEN=LEN(data)+1), TARGET :: data_buf 665 666 INTEGER, INTENT(IN) :: fid 667 INTEGER :: i 668 INTEGER(KIND=C_INT) :: my_fid 669 INTEGER(KIND=C_SIZE_T) :: name_len 670 INTEGER(KIND=C_SIZE_T) :: retval 671 672 TYPE(C_PTR) :: ptr 667 CHARACTER(LEN=*), DIMENSION(:) :: data !< 668 CHARACTER(LEN=LEN(data)+1), TARGET :: data_buf !< 669 670 INTEGER :: i !< 671 INTEGER, INTENT(IN) :: fid !< 672 INTEGER(KIND=C_INT) :: my_fid !< 673 INTEGER(KIND=C_SIZE_T) :: name_len !< 674 INTEGER(KIND=C_SIZE_T) :: retval !< 675 676 TYPE(C_PTR) :: ptr !< 673 677 674 678 … … 690 694 IMPLICIT NONE 691 695 692 INTEGER, INTENT(IN) :: fid 693 INTEGER(KIND=C_INT) :: my_fid 694 INTEGER(KIND=C_INT) :: retval 696 INTEGER, INTENT(IN) :: fid !< 697 INTEGER(KIND=C_INT) :: my_fid !< 698 INTEGER(KIND=C_INT) :: retval !< 695 699 696 700
Note: See TracChangeset
for help on using the changeset viewer.