Из файла 1.txt считать в массив shorts37- name_sh() character,размер массива зависит от того сколько раз встретится SHORTS в 1.txt(заранее неизвестно) ident- nomer_sh(i) integer,размер массива зависит от того сколько раз встретится SHORTS в 1.txt N-colsh(i) Nrazmsh- Nsh(k,N),k=ident, N=1,colsh(), k=1,5;N=1,35 integer dress47- name_dr(i) character,размер массива зависит от того сколько раз встретится SHORTS в 1.txt N-coldr(i) Nrazmdr- Ndr(k,N),k=номеру i из массива coldr или name_dr,N=1,coldr() k=1,7 N=1,35 integer файл 1.txt _____________________________ SHORTS SHORTS37 IDENT=54 N = 5 Nrazmsh = 41,42,43,44,45 SHORTS SHORTS27 IDENT=67 N = 4 Nrazmsh = 41,42,44,45 DRESS DRESS31 N = 3 Nrazmdr = 43,44,45 DRESS DRESS78 N = 4 Nrazmdr = 42,43,44,45 SHORTS SHORTS85 IDENT=90 N = 3 Nrazmsh = 41,42,44 __________________________________________ Прилагаю своё решение,можно поправить program vsp INTEGER Nsh(5,35),Ndr(7,35) character*23 str(100) integer i,i1 CHARACTER*23 name_sh,name_dr integer nomer_sh,col_sh(),col_dr() common/sh/name_sh(),nomer_sh(),Nsh(5,35) common/dr/name_dr(),Ndr(5,35) OPEN(3,err=2000,file='1.txt',STATUS='OLD') do i=1,100 предположила,что длина файла 100 строк,но вообще нужно просто до конца прочитать файл... read(3,*)str(i) c for SHORTS if ((str(i)(1:6) .eq. 'SHORTS').AND.(i.LT.100).AND. * (str(i)(7:7) .ne. ' ')) then name_sh(i) = str(i) read(3,'(A5,3x,I7)')str(i+2),nomer_sh(i) read(3,'(A1,3x,I7)')str(i+3),col_sh(i) read(3,'(10x,I10)')(Nsh(nomer_sh(i),j),j=1,colsh(i)) else go to 2 end if 2 continue c for DRESS if ((str(i)(1:5) .eq. 'DRESS').AND.(i.LT.100).AND. * (str(i)(6:6) .ne. ' ')) then name_sh(i) = str(i) read(3,'(A1,3x,I7)')str(i+2),col_dr(i) read(3,'(10x,I10)')(Ndr(nomer_dr(i),j),j=1,coldr(i)) else go to 3 end if 3 continue end do OPEN(12,err=2001,file='dis.txt',status='NEW') do i1=1,100 write(12,*)'name_sh(',i1,')=',name_sh(i1) write(12,*)'nomer_sh(',i1,')=',nomer_sh(i1) write(12,'(A1,1X,I10)')'F=',(Nsh(nomer_sh(i),j),j=1,colsh(i)) write(12,*)'name_dr(',i1,')=',name_dr(i1) write(12,'(A1,1X,I10)')'F=',(Ndr(nomer_dr(i),j),j=1,coldr(i)) end do close(3) close(12) 2000 write(*,*)'jdjb' 2001 write(*,*)'jhkj' END