Advertisement
Guest User

Untitled

a guest
Jun 10th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. program lab_1_2
  2.     use Environment
  3.     implicit none
  4.    
  5.     integer, parameter                 :: NAME_LEN = 15, DATE_LEN = 4,&
  6.                                           SERV_LEN = 3, REG_LEN = 1, SEX = 1
  7.     integer, parameter                 :: len = 6
  8.    
  9.     character(kind=CH_), allocatable   :: chName(:,:), Date(:,:),&
  10.                                           Serv(:,:), Reg(:,:), Gen(:,:)
  11.     character(kind=CH_), parameter  :: s="S", p="P", yes = "yes"
  12.     allocate(chname(len, Name_len), Date(len, Date_len),&
  13.              serv(len, serv_len), reg(len, reg_len), gen(len, sex))
  14.  
  15.     call Read_list(input, chname, date, serv, reg, gen)
  16.      
  17.     call Write_list(output, chname, date, serv, reg, gen,&
  18.                      "list before", "rewind", len)
  19.     call Sort_list (chname, date, serv, reg, gen)
  20.  
  21.     contains
  22.        subroutine Read_list(input, chname, date, serv, reg, gen)
  23.          character(*) input
  24.          character(kind=CH_), allocatable   :: chName(:,:), Date(:,:),&
  25.                                           Serv(:,:), Reg(:,:), Gen(:,:)
  26.          intent(in) input
  27.          intent(inout) chname, date, serv, reg, gen
  28.  
  29.          integer in, IO, i
  30.          character(:), allocatable :: format
  31.          
  32.          open( file = input, encoding=E_, newunit=in)
  33.             format = "(1A15, 1A4, 1X, 1A3, 1X, 1A1, 1X, 1A1)"  
  34.             read(in, format) (chName(i,:), Date(i,:), Serv(i,:), Reg(i,:), Gen(i,:), i=1, 6)
  35.          close(in)
  36.         end subroutine Read_list
  37.  
  38.         subroutine Write_list ( output, chname, date, serv, reg, gen, comment, pos, len)
  39.             character(*)      output, comment, pos
  40.             character(kind=CH_)   :: chName(:,:), Date(:,:),&
  41.                                      Serv(:,:), Reg(:,:), Gen(:,:)
  42.             intent(in) output, comment, pos
  43.             integer, intent(in)  :: len
  44.             intent(inout) chname, date, serv, reg, gen
  45.             integer        :: out, i , io
  46.             character(:), allocatable :: format
  47.             open(file=output, encoding=E_, position=pos, newunit=out)
  48.                write(out, '(/a)') comment
  49.                format = "(1A15, 1A4, 1X, 1A3, 1X, 1A1, 1X, 1A1)"  
  50.                do i=1, len
  51.                   write(out, format) chName(i,:), Date(i,:), Serv(i,:),&
  52.                                          Reg(i,:), Gen(i,:)
  53.                end do
  54.             close(out)
  55.          end subroutine Write_list
  56.  
  57.  
  58.          subroutine Sort_list(chname, date, serv, reg, gen)
  59.             character(kind=CH_) chname(:,:), date(:,:), serv(:,:),&
  60.                                  reg(:,:), gen(:,:)
  61.  
  62.             integer              i, j
  63.             integer, parameter   :: INDEXES(*) = [(i, i = 1, len)]
  64.            
  65.             do i=1, len
  66.             !   if( serv(i, :) .eq. s ) then
  67.                   print *, "got"
  68.             !   end if
  69.             end do
  70.  
  71.          end subroutine
  72.  
  73. end program lab_1_2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement