Pascal - É possivel copiar dados de um array e passar para outro em pascal?

Tenho um projeto de uma biblioteca. Tenho um array que cadastra o livro e outro que cadastra o usuario. Tenho um array para os emprestimos deste livro. Quando ele for fazer o emprestimo tem que verificar atrvez do cpf se o usuario esta cadastrado, se ele estiver ele vai pegar todos os dados no array usuario e vai mandar para o array emprestimo. Caso contrario ele terá que voltar ao menu principal. Pesquisei em alguns livros e video-aulas mas percebi que não ha nada que possa me ajudar. Alguem se possivel poderia me ajudar.

Codigo completo do meu projeto:

Program Biblioteca ;

Type
	Usuario = Record
		Nome: String;
		Endereco: String;
		Telefone: String;
		Cpf: String;
	End;	
			
	Type
	Livros = Record
	matricula:integer;
		Nome: String;
		Autor: String;
		Editora: String;
		situacao:String;
		myfile: text;
	End;
	
	Type
	empresta_livro = record
	nome_cliente: String;
	cpf_cliente: String;
	endereco_cliente: String;
	telefone_cliente: String;
	matricula_livro:integer;
	nome_livro: String;
	data_empresta_livro: String;
	data_devolve_livro:String;
	End;	
			

var
vetor_usuario: array[1..100] of Usuario;
vetor_livros: array[1..100] of Livros;
vetor_empresta: array[1..100]of empresta_livro;
esc: char;

opcao, qtd_usuarios,qtd_livros,qtd_emprestimo,emprestimo: integer;
remover:boolean;

 
procedure Menu;
Begin
			writeln('Sistema de Biblioteca 7.3.2');
			writeln('Menu de opções:');
			writeln('');
			writeln('1. Cadastrar Livro:');
			writeln('2. Cadastrar o Usuario:');
			writeln('3. Listar Livro:');
			writeln('4. Listar Usuario:');
			writeln('5. Realizar empréstimo:');
			writeln('6. Devolver Livro:');
			writeln('7. Listar todos os Emprestimos:');
			writeln('8. Pesquisar Livros:');
			writeln('9. Pesquisar Usuarios:');
			writeln('10. Alterar dados do Livro:');
			writeln('11. Alterar dados do Usuario:');
			writeln('12. Exluir Livro:');
			writeln('13. Excluir Usuario:');
			writeln('14. Mostrar Livros na Biblioteca');
			writeln('15. Mostrar Livros Emprestados');
			writeln('16. Relatorio do Livro por usuario:');
			writeln('17. Relatorio do Usuario:');
			writeln('00. Sair');

  end;

 
Procedure Cadastrar_Livro;
var
i,quant:integer;  
Begin
esc := 'S' ;

while ((esc = 'S') or (esc = 's'))do
begin
qtd_livros:= qtd_livros + 1;
   
	writeln();     			 	  
	Writeln('Digite a Matricula: ');
	readln(vetor_livros[qtd_livros].matricula);
	Writeln('Digite o nome do Livro: ');
	readln(vetor_livros[qtd_livros].Nome);
	Writeln('Digite o Autor: ');
	readln(vetor_livros[qtd_livros].Autor);
	Writeln('Digite a Editora: ');
	readln(vetor_livros[qtd_livros].Editora);	
	vetor_livros[qtd_livros].situacao := '1';
	writeln('');
	writeln('Matricula realizada com sucesso!!');
	writeln('Deseja continuar cadastrando?(S - SIM / N - NÃO) ');
	readln(esc); 
end;
End;

Procedure Cadastrar_Usuario;
Begin
esc := 'S' ;
while ((esc = 'S') or (esc = 's'))do
begin           
   qtd_usuarios := qtd_usuarios +1;
	Writeln('Digite o nome do Usuario: ');
	readln(vetor_usuario[qtd_usuarios].Nome);
	Writeln('Digite o endereço do Usuario: ');
	readln(vetor_usuario[qtd_usuarios].Endereco);
	Writeln('Digite o Telefone do Usuario: ');
	readln(vetor_usuario[qtd_usuarios].Telefone);
	Writeln('Digite o Cpf do Usuario: ');
	readln(vetor_usuario[qtd_usuarios].Cpf);
	writeln('Deseja continuar cadastrando?(S - SIM / N - NÃO) ');
	readln(esc);
	 end;       
					
End;   

Procedure Listar_Livro;
var 
i:integer;
Begin
  for i:=1 to qtd_livros do 
  begin                     

  
 writeln('Matricula do Livro:',vetor_livros[i].matricula);
  writeln('Nome: ',vetor_livros[i].Nome);
  writeln('Autor: ',vetor_livros[i].Autor);
  writeln('Editora: ',vetor_livros[i].Editora);
  
   if(vetor_livros[i].situacao = '1')then
			
	 begin   
	writeln('Situação: Na Biblioteca');
	      end
	      else
				begin
				writeln('Situação: Emprestado');
	      end;
       end;
       
End;			
   
Procedure Listar_Usuario;
var 
i:integer;

Begin
  for i:=1 to qtd_usuarios do 
  begin                     
 
  writeln('Nome: ',vetor_usuario[i].Nome);
  writeln('Endereço: ',vetor_usuario[i].endereco);
  writeln('Telefone: ',vetor_usuario[i].telefone);
  writeln('Cpf:',vetor_usuario[i].cpf);
                            end;
End;


function Pesquisar(matriculaAPesquisar : integer) : integer;
var  
  resultado:integer; 
  i : integer;
begin
  resultado:= -1; 
  for i:= 1 to qtd_livros do begin
    if (matriculaAPesquisar = vetor_livros[i].matricula) then begin
      resultado := i;  
      break; 
    end;
  end;

  Pesquisar := resultado; 
end; 

	 
function Pesquisa(cpfAPesquisar : string) : integer;
var  
  result:integer; 
  i : integer;
begin
  result:= -1; 
  for i:= 1 to qtd_usuarios do begin
    if (cpfAPesquisar = vetor_usuario[i].cpf) then begin
      result := i;  
      break; 
    end;
  end;

  Pesquisa := result; 
end; 
 
 
 
Procedure Realizar_Emprestimo;
var
pesq:string;
pesq_n:integer;
i,ind_livro,cont,conta:integer;
indiciLivro:integer;
achou:boolean;
encontra:boolean;
esc:integer;
indiciUsuario:integer;
resp:boolean;
Begin
  Writeln('Digite o cpf do Usuario:');
  readln(pesq);
  indiciUsuario := Pesquisa(pesq);
  
	if(indiciUsuario > -1)then
  begin
    
 
writeln('Usurio encontrado! Fazer Emprestimo:');
   emprestimo:= emprestimo + 1;                           			 	  
//A principio criei um formulario pedindo para digitar novamente os dados do usuario e do livro mas um amigo meu
//me deu a dica de fazer assim porem não obtive exito fazendo.
	  
  end;  
writeln('Pesquisa livros pela matricula:');
  readln(pesq_n);
             
  indiciLivro := Pesquisar(pesq_n);
  if (indiciLivro > -1) then
  
    //Assim como o usuario o livro deve ser verifica por sua matricula se for encontrado ele pega todos os
    //dados do livro no vetor_livros se não ele deve voltar para o Menu principal
		end;                         
              
 
     
End;	    
	    

//devolve o livro
Procedure Devolver_Livro;
var
i,contaa,pesq_mat: integer;

Begin

writeln('Digite a matricula do livro:');
readln(pesq_mat);
for i:=1 to emprestimo do
begin
if(vetor_empresta[i].matricula_livro = pesq_mat)then
begin
     writeln('Digite a data da devolução:');
readln(vetor_empresta[emprestimo].data_devolve_livro);
writeln('A devolução do livro ',vetor_livros[i].nome, ' foi realizada com sucesso**!');
vetor_livros[qtd_livros].situacao := '1';
end;
end;
End;   

//
Procedure Listar_Emprestimo;
 var 
i:integer;
Begin
  for i:=1 to emprestimo do 
  begin                     

  
 writeln('Matricula do livro:',vetor_empresta[i].matricula_livro);
  writeln('Nome do Livro: ',vetor_empresta[i].nome_livro);
  writeln('Nome do Cliente: ',vetor_empresta[i].nome_cliente);
   writeln('Endereço do Cliente: ',vetor_empresta[i].endereco_cliente);
    writeln('Telefone do Cliente: ',vetor_empresta[i].telefone_cliente);
  writeln('CPF do Cliente: ',vetor_empresta[i].cpf_cliente);
  writeln('Data que o livro foi emprestado: ',vetor_empresta[i].data_empresta_livro);
  writeln('Data que o livro foi devolvido: ',vetor_empresta[i].data_devolve_livro);
  
       end;

End;

   
//Pesquisa o livro
Procedure Pesquisar_Livros;
var
pesq:String;
pesq_n:integer;
i,cont:integer;
indicibusca:integer;
achou:boolean;
esc:integer;

Begin       		
		  cont:=0;
  Writeln('Digite a matricula do livro para pesquisa-lo:');
  readln(pesq_n);
  writeln('Resultado da Busca:');
  for i:=1 to qtd_livros do
  begin
  if(vetor_livros[i].matricula = pesq_n)then
  begin
      achou:=true;
  indicibusca:=i;
  end;
  end;
  if achou=true then
  begin
  writeln('Matricula do Livro:',vetor_livros[indicibusca].matricula);
  writeln('Nome: ',vetor_livros[indicibusca].Nome);
  writeln('Autor: ',vetor_livros[indicibusca].Autor);
  writeln('Editora: ',vetor_livros[indicibusca].Editora);
  if(vetor_livros[indicibusca].situacao = '1')then
			
	 begin   
	writeln('Situação: Na Biblioteca');
	      end
	      else
				begin
				writeln('Situação: Emprestado');
	      end;
	
  cont:= cont+1;
  end;
  if(cont = 1)then
   writeln('Quantidade encontrada:',cont)
  else
    writeln('Nenhum livro com essa matricula foi encontrado');
	  
End;

//Altera o livro
Procedure  Alterar_Livros;
var
pesq:String;
pesq_n:integer;
i,cont:integer;
Begin
  cont:=0;
  Writeln('Digite a matricula do livro:');
  readln(pesq_n);
  writeln('Resultado da Busca:');
  for i:=1 to qtd_livros do
  begin
  if(vetor_livros[i].matricula = pesq_n)then
  begin
	Writeln('Digite a Matricula: ');
	readln(vetor_livros[qtd_livros].matricula);
	Writeln('Digite o nome do Livro: ');
	readln(vetor_livros[qtd_livros].Nome);
	Writeln('Digite o Autor: ');
	readln(vetor_livros[qtd_livros].Autor);
	Writeln('Digite a Editora: ');
	readln(vetor_livros[qtd_livros].Editora);	
  cont:= cont+1;
  end;
  end;
  if(cont = 0)then
  writeln('Nenhum livro com esse nome foi encontrado')
  else
  writeln('As alterações foram feitas com sucesso!!');
End;

  Procedure Excluir_Livros;
var
liv:integer;
i:integer;
Begin
writeln('Digite o livro a ser removido:');
	readln(liv);
	for i:= 1 to qtd_livros do
	begin
	if(vetor_Livros[i].matricula = liv)then
	begin
	writeln('O livro ',vetor_livros[i].matricula,' foi excluido com sucesso!!');
	qtd_livros:= qtd_livros - 1;
	end;
	end;
End;

Procedure Pesquisar_Usuarios;
var
pesq:String;
pesq_n:integer;
i,cont,indicibusca:integer;
achou:boolean;
Begin                                                                                    
  cont:=0;
  Writeln('Digite o CPF do Usuario:');
  readln(pesq);
  writeln('Resultado da Busca:');
  for i:=1 to qtd_usuarios do
  begin
  if(vetor_usuario[i].cpf = pesq)then 
	begin
  achou:=true;
  indicibusca:=i;
  end;
  end;
  
	if achou=true then
	begin
		writeln('Nome: ',vetor_usuario[indicibusca].Nome);
  writeln('Endereço: ',vetor_usuario[indicibusca].endereco);
  writeln('Telefone: ',vetor_usuario[indicibusca].telefone);
  writeln('Cpf:',vetor_usuario[indicibusca].cpf);
  
   end
  else
    writeln('Nenhum usuario com esse CPF encontrado!');
		  
	  
End;


Procedure Alterar_Usuarios;
  var
pesq:String;
pesq_cpf:integer;
i,cont:integer;
Begin
  cont:=0;
  Writeln('Pesquise pelo nome ou CPF ');
  readln(pesq);
  writeln('Resultado da Busca:');
  for i:=1 to qtd_usuarios do
  begin
  if((vetor_usuario[i].nome = pesq) or (vetor_usuario[i].cpf = pesq))then
  begin
	Writeln('Digite o nome do Usuario: ');
	readln(vetor_usuario[qtd_usuarios].Nome);
	Writeln('Digite o endereço do Usuario: ');
	readln(vetor_usuario[qtd_usuarios].Endereco);
	Writeln('Digite o Telefone do Usuario: ');
	readln(vetor_usuario[qtd_usuarios].Telefone);
	Writeln('Digite o Cpf do Usuario: ');
	readln(vetor_usuario[qtd_usuarios].Cpf);	
  cont:= cont+1;
  end;
  if(cont = 0)then
  writeln('Nenhum usuario encontrado!')
  else
  writeln('Quantidade encontrada:',cont);
End;
end;
Procedure Excluir_Usuarios;
var
liv:string;
i:integer;
Begin
writeln('Digite o livro a ser removido:');
	readln(liv);
	for i:= 1 to qtd_usuarios do
	begin
	if(vetor_usuario[i].cpf = liv)then
	begin
	writeln('O usuario de CPF ',vetor_usuario[i].cpf,' foi excluido com sucesso!!');
	qtd_usuarios:= qtd_usuarios - 1;
	end;
	end;
End;

procedure Livros_biblioteca;
var 
i:integer;
conta:integer;
Begin

			conta:=0;
  for i:=1 to qtd_livros do 
  begin                     

 if(vetor_livros[i].situacao = '1')then
  begin   
 writeln('Matricula do Livro:',vetor_livros[i].matricula);
  writeln('Nome: ',vetor_livros[i].Nome);
  writeln('Autor: ',vetor_livros[i].Autor);
  writeln('Editora: ',vetor_livros[i].Editora);
  
  	writeln('Situação: Na Biblioteca');
			 conta:=conta+1;
	

	      end;
	      
	      if(conta=0) then
				begin
				writeln('Sem na Na Biblioteca!');
	      end;
	      
	      end;
       end;
        
Procedure livros_emprestados;
       var 
i:integer;
conta:integer;
v:boolean;
Begin

			conta:=0;
  for i:=1 to qtd_livros do 
  begin                     

 if(vetor_livros[i].situacao = '2')then
  begin
	v:=true;   
  end;
  end;
  if(v=true)then begin
 writeln('Matricula do Livro:',vetor_livros[i].matricula);
  writeln('Nome: ',vetor_livros[i].Nome);
  writeln('Autor: ',vetor_livros[i].Autor);
  writeln('Editora: ',vetor_livros[i].Editora);
  
  	writeln('Situação: Emprestado');
			 conta:=conta+1;
	

	      end
	      else begin
	      writeln('Nenhum livro emprestado!');
				end;
				end;
	      
	  
		 Procedure Relatorio_Livro;
       var 
i:integer;
a:integer;
Begin
writeln('Digite a matricula:');
readln(a);
  for i:=1 to emprestimo do
	 
  begin                     
	if(vetor_empresta[i].matricula_livro = a)then 
	begin
  
       writeln('');
  writeln('Nome do Cliente: ',vetor_empresta[i].nome_cliente);
  writeln('Endereço do Cliente: ',vetor_empresta[i].endereco_cliente);
  writeln('Telefone do Cliente: ',vetor_empresta[i].telefone_cliente);
  writeln('CPF do Cliente: ',vetor_empresta[i].cpf_cliente);
  writeln('');
       end
       else begin
       writeln('Erro!!');
			 end;
       end;
End;

Procedure Relatorio_Usuario;
    var 
i:integer;
c:String;
Begin
writeln('Digite o cpf:');
readln(c);
  for i:=1 to emprestimo do
	 
  begin                     
	if(vetor_empresta[i].cpf_cliente = c)then 
	begin
  
       writeln('');
 writeln('Matricula do livro: ',vetor_empresta[i].matricula_livro);
  writeln('Nome do Livro: ',vetor_empresta[i].nome_livro);
  writeln('Data que o livro foi emprestado: ',vetor_empresta[i].data_empresta_livro);
  writeln('Data que o livro foi devolvido: ',vetor_empresta[i].data_devolve_livro);
  writeln('');
       end
       else begin
       writeln('Erro!!');
			 end;
       end;
End;
Procedure Sair;  
Begin
  Writeln('Programa encerrado com sucesso. Até a Proxima!');
End;
	 
Procedure Selecine_opcao(Opc: integer);	  
Begin
  Case opc of 
  1: Cadastrar_Livro;
	2: Cadastrar_Usuario;
	3: Listar_Livro;
	4: Listar_Usuario;
	5: Realizar_emprestimo;
	6: Devolver_Livro;
	7: Listar_Emprestimo;
	8: Pesquisar_Livros;
	9: Pesquisar_Usuarios;
  10:Alterar_Livros;
	11:Alterar_Usuarios;
	12:Excluir_Livros;
	13:Excluir_Usuarios;
	14:Livros_biblioteca;
	15:Livros_Emprestados;
	16: Relatorio_Livro;
	17:Relatorio_Usuario;
	00: Sair;
  End;
End;
   
Begin
	
	opcao:= 1;
	while (opcao<>00) do
	Begin
   	Menu; 
   	Write('Escolha uma opção: ');
   	Readln(opcao);
   	if(opcao <= 17) then
   	begin
   	Selecine_opcao(opcao);
   	Writeln('');
   	end
   	else
   	begin
   	writeln('');
   	writeln('**OPÇÃO INVALIDA!** / Escolha um número da opção:');
   	writeln('');
		 end;
   	
  end;   
End.