Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program lab_1_2
- use Environment
- implicit none
- integer, parameter :: NAME_LEN = 15, DATE_LEN = 4,&
- SERV_LEN = 3, REG_LEN = 1, SEX = 1
- integer, parameter :: len = 6
- character(kind=CH_), allocatable :: chName(:,:), Date(:,:),&
- Serv(:,:), Reg(:,:), Gen(:,:)
- character(kind=CH_), parameter :: s="S", p="P", yes = "yes"
- allocate(chname(len, Name_len), Date(len, Date_len),&
- serv(len, serv_len), reg(len, reg_len), gen(len, sex))
- call Read_list(input, chname, date, serv, reg, gen)
- call Write_list(output, chname, date, serv, reg, gen,&
- "list before", "rewind", len)
- call Sort_list (chname, date, serv, reg, gen)
- contains
- subroutine Read_list(input, chname, date, serv, reg, gen)
- character(*) input
- character(kind=CH_), allocatable :: chName(:,:), Date(:,:),&
- Serv(:,:), Reg(:,:), Gen(:,:)
- intent(in) input
- intent(inout) chname, date, serv, reg, gen
- integer in, IO, i
- character(:), allocatable :: format
- open( file = input, encoding=E_, newunit=in)
- format = "(1A15, 1A4, 1X, 1A3, 1X, 1A1, 1X, 1A1)"
- read(in, format) (chName(i,:), Date(i,:), Serv(i,:), Reg(i,:), Gen(i,:), i=1, 6)
- close(in)
- end subroutine Read_list
- subroutine Write_list ( output, chname, date, serv, reg, gen, comment, pos, len)
- character(*) output, comment, pos
- character(kind=CH_) :: chName(:,:), Date(:,:),&
- Serv(:,:), Reg(:,:), Gen(:,:)
- intent(in) output, comment, pos
- integer, intent(in) :: len
- intent(inout) chname, date, serv, reg, gen
- integer :: out, i , io
- character(:), allocatable :: format
- open(file=output, encoding=E_, position=pos, newunit=out)
- write(out, '(/a)') comment
- format = "(1A15, 1A4, 1X, 1A3, 1X, 1A1, 1X, 1A1)"
- do i=1, len
- write(out, format) chName(i,:), Date(i,:), Serv(i,:),&
- Reg(i,:), Gen(i,:)
- end do
- close(out)
- end subroutine Write_list
- subroutine Sort_list(chname, date, serv, reg, gen)
- character(kind=CH_) chname(:,:), date(:,:), serv(:,:),&
- reg(:,:), gen(:,:)
- integer i, j
- integer, parameter :: INDEXES(*) = [(i, i = 1, len)]
- do i=1, len
- ! if( serv(i, :) .eq. s ) then
- print *, "got"
- ! end if
- end do
- end subroutine
- end program lab_1_2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement