include 'mpif.h' integer ierr character*100 filename character*10 digit_string integer p integer my_rank integer size call MPI_Init(ierr) C Get my_rank call MPI_Comm_rank(MPI_COMM_WORLD, my_rank, ierr) C Get the number of Processes call MPI_Comm_size(MPI_COMM_WORLD, p, ierr) call seed_random_numbers( my_rank) C Convert my_rank to a charactoer string call to_string(my_rank, digit_string, size) C Concat "file" and the string for my_rank filename='file.' // digit_string(1:size) C Open a file for each process for I/O OPEN(unit=7,file=filename,status='unknown') WRITE(7,*)'Hello World from ',my_rank call MONTE_CARLO() CLOSE(7) call MPI_Finalize(ierr) end cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c c Converts the integer stored in number into an ascii c string. The string is returned in string. The number of c digits is returned in size. subroutine to_string(number, string, size) integer number character *(*) string integer size character*100 temp integer local integer last_digit integer i local = number i = 0 c strip digits off starting with least significant c do-while loop 100 last_digit = mod(local,10) local = local/10 i = i + 1 temp(i:i) = char(last_digit + ichar('0')) if (local.ne.0) go to 100 size = i c reverse digits do 200 i = 1, size string(size-i+1:size-i+1) = temp(i:i) 200 continue c return end c to_string c