Error C2006 Statement not allowed outside procedure or func

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
JLF
Usuário Nível 2
Usuário Nível 2
Mensagens: 78
Registrado em: 21 Jul 2005 12:52
Localização: Sao Paulo

Error C2006 Statement not allowed outside procedure or func

Mensagem por JLF »

Boa noite amigos,

Esta dando esta msg de erro na compilação da seguinte linha

APPEND FROM plaorion.dbf

Estou criando um novo DBF e quero colocar as informações que estão no antigo para um novo, pois houve mudanças de tamanho nos campos, mas este erro não esta deixando gerar o OBJ, sera que a função APPEND sumiu do diretório ?

:-o

Error C2006 Statement not allowed outside procedure or function
JLF - relembrando bons tempos
Clipper 5.3 - Blinker 7
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Error C2006 Statement not allowed outside procedure or func

Mensagem por sygecom »

Já tentou apagar todos os OBJ e recompilar tudo do ZERO. Tente postar um pequeno exemplo de como esta usando, a principio sua linha onde tem o append from esta correta.
E verefique seu não esta faltando linkar a LIB do CLIPPER
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Re: Error C2006 Statement not allowed outside procedure or func

Mensagem por ANDRIL »

Na minha opniao a linha do APPEND FROM nao tem nada a ver.

Esta mensagem de erro esta acusando que alguma declaração com FIELD, MEMVAR, STATIC foi declarada antes da primeira declaração de PROCEDURE ou FUNCTION.

Você esta usando a chave /n do compilador? Tente compilar sem esta chave para o clipper gerar automaticamente uma procedure inicial com o mesmo nome do PRG principal.

Ou

Veja no seu codigo se ha uma das declarações acima colocadas fora de uma procedure e coloque-as depois da declaração do nome da procedure.

Quanto a declaração da CLIPPER.LIB não é necessária, pois o LINKER procura automaticamente nesta lib.


Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
JLF
Usuário Nível 2
Usuário Nível 2
Mensagens: 78
Registrado em: 21 Jul 2005 12:52
Localização: Sao Paulo

Re: Error C2006 Statement not allowed outside procedure or func

Mensagem por JLF »

SYGECOM,

Tenho por costume já apagar os OBJ e BIF toda vez q vou recompilar, pra não correr riscos..

A rotina é simples, peguei aqui mesmo um modelinho já faz um bom tempo... (me desculpe o autor que esqueci de guardar o nome)

*** rotina facil de gerar um novo a partir do velho, por exemplo aumentando um campo
CAMPOS:={{"campo1" ,"c",005,000},;
{"campo2" ,"C",036,000},;
{"campo3" ,"c",010,000},;
{"campo4" ,"C",040,000},; // Digamos que este era o campo diferente ao que estava
{"campo5" ,"N",002,000} }
DBCREATE("PLAN2008.DBF",CAMPOS)
USE PLAN2008.DBF
APPEND FROM plaorion.dbf


Para compilar:

@echo off
clipper plantext /n
if errorlevel 1 pause
\util\blinker7\bin\blinker fi plantext
if errorlevel 1 pause


O erro é exatamente nesta linha que esta retornando o clipper, por causa do numero da linha não tem erro.
JLF - relembrando bons tempos
Clipper 5.3 - Blinker 7
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

A mensagem de erro é típica de uma declaração ilegal de variável. Poste a função toda. Ou pelo menos seu começo. De repente, o erro pode estar ali. Nem sempre o compilador aponta o local correto do erro. Isso também ocorre quando há uma declaração ou inicialização de variável feita de forma ilegal ANTES da declaração da função. Então, veja isso também.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
JLF
Usuário Nível 2
Usuário Nível 2
Mensagens: 78
Registrado em: 21 Jul 2005 12:52
Localização: Sao Paulo

Re: Error C2006 Statement not allowed outside procedure or func

Mensagem por JLF »

Grande mestre MALIGNO,

A função toda é exatamente e tão somente isso:

*** rotina facil de gerar um novo a partir do velho, por exemplo aumentando um campo
CAMPOS:={{"campo1" ,"c",005,000},;
{"campo2" ,"C",036,000},;
{"campo3" ,"c",010,000},;
{"campo4" ,"C",040,000},; // Digamos que este era o campo diferente ao que estava
{"campo5" ,"N",002,000} }
DBCREATE("PLAN2008.DBF",CAMPOS)
USE PLAN2008.DBF
APPEND FROM plaorion.dbf


Especifico os campos, crio o novo DBF e depois copio para este novo o DBF antigo... será que o erro é por ai então ?
JLF - relembrando bons tempos
Clipper 5.3 - Blinker 7
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Error C2006 Statement not allowed outside procedure or func

Mensagem por Pablo César »

JLF escreveu:A função toda é exatamente e tão somente isso
Se o seu utilitário é apenas esse código-fonte descrito acima. Posso tranquilamente afirmar que não possui erro algum. Eu até compilei isto é "testei" compilando com Clipper 5.2e e Clipper 5.3 (RTLINK e BLINKER). Não tem erro esse código, talvez você deve estar executando alguma batch na hora de compilar ou até seu Clipper possa estar furado.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Re: Error C2006 Statement not allowed outside procedure or func

Mensagem por ANDRIL »

Você tentou compilar sem a chave /n ?? Não adiantou??????

Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
JLF
Usuário Nível 2
Usuário Nível 2
Mensagens: 78
Registrado em: 21 Jul 2005 12:52
Localização: Sao Paulo

Re: Error C2006 Statement not allowed outside procedure or func

Mensagem por JLF »

ANDRIL,

vc "matou a pau" ... :%

Não tinha pensado nisso, bastou tirar o /n e compilou sem erro...

Só que ao executar o EXE, criou o novo DBF mas o APPEND não funcionou, o arquivo novo ficou vazio .... :-O

O número de campos é exatamente o mesmo, ou seja, apenas 5 campos, o formato deles também são iguais, estou somente aumentando o numero de caracteres em 1 único campo...
JLF - relembrando bons tempos
Clipper 5.3 - Blinker 7
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Re: Error C2006 Statement not allowed outside procedure or func

Mensagem por ANDRIL »

Estranho o seu APPEND FROM nao esta funcionando. Tente declarar o caminho junto ao nome do arquivo:

APPEND FROM c:\meudir\meudbf.dbf

Há algum tempo atrás, precisei criar um utilitário para fazer a função do APPEND FROM mais que me permitisse ter o novo arquivo com uma estrutura diferente (exemplo: no arquivo antigo o campo codigo era numerico e no novo arquivo o campo codigo mudou para caracter, etc) e ainda checar se o arquivo de origem possui algum campo invalido, oque ocasionaria um erro de run-time durante o APPEND FROM normal.

Se quiser poste seu email para que lhe envie, pois aqui não é aceito extensão .EXE


Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
JLF
Usuário Nível 2
Usuário Nível 2
Mensagens: 78
Registrado em: 21 Jul 2005 12:52
Localização: Sao Paulo

Re: Error C2006 Statement not allowed outside procedure or func

Mensagem por JLF »

ANDRIL,
Ficarei muito grato se puder me mandar jlf_xxi@hotmail.com

Amigos descobri algo que deve ser a chave do meu problema, coloquei os 2 DBF no diretorio do clipper e fui dar o APPEND pelo DBU, não funcionou, o arquivo novo permanece vazio e o DBU retorna como se estivesse tudo feito...

Alguma idéia do que deve ter acontecido ? (Obs. a data de criação do DBU.EXE é de 26/06/1995)
JLF - relembrando bons tempos
Clipper 5.3 - Blinker 7
Avatar do usuário
JLF
Usuário Nível 2
Usuário Nível 2
Mensagens: 78
Registrado em: 21 Jul 2005 12:52
Localização: Sao Paulo

Re: Error C2006 Statement not allowed outside procedure or func

Mensagem por JLF »

Agradeço ao amigo ANDRIL que enviou o arquivo,

Infelizmente não rodou deu erro, posto a img aqui...

Mas consegui já importar o arquivo de outra maneira, abri ele no Excel e salvei como DBF, tudo bem que assim não vale fica facil...

Imagem
JLF - relembrando bons tempos
Clipper 5.3 - Blinker 7
Wind
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 12 Mar 2008 18:35
Localização: Brasil

Re: Error C2006 Statement not allowed outside procedure or func

Mensagem por Wind »

JLF, o APPEND FROM tenta abrir o arquivo ORIGEM em modo SHARED. Se ele já estiver aberto, os registros NÃO são copiados e não dá nenhuma mensagem de erro. Só dá run time error se o comando não conseguir abrir o arquivo (se ele por exemplo já estiver aberto em modo EXCL ou FLOCKeado).

Feche o arquivo PLAORION.dbf antes de fazer o APPEND e os registros vão ser copiados.
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Re: Error C2006 Statement not allowed outside procedure or func

Mensagem por ANDRIL »

Esqueci de mencionar que o aplicativo apenas trabalha com DBFs, digo, extrutura de DBF.

Como o segundo arquivo é .TXT (outra estrutura deu erro).

Usava este aplicativo para atualizar o DBF antigo que estava no cliente para o novo DBF que estava mandando na atualização.

Exemplo: o cliente tem um arquivo PEDIDO.DBF e eu mando sempre o arquivo PEDIDO.NOV para que seja atualizado.

Mesmo que PEDIDO.NOV tenha sua estrutura acrescentada, diminuida, campo alterado de tipo, o aplicativo trava estas diferenças diminuindo 90% de chances de erro.

Ate+,
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Responder