Erro: "Unsolved external _HB_FUN_SWPRUNCMD"

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

simoreira
Usuário Nível 1
Usuário Nível 1
Mensagens: 40
Registrado em: 20 Ago 2004 16:21

Erro: "Unsolved external _HB_FUN_SWPRUNCMD"

Mensagem por simoreira »

Pessoal,

Sou iniciante no xHarbour e esatou ainda na migração do Clipper 5.2e para xHarbour.

Bem, antes de iniciar li muitos dos posts deste fórum e fui me guiando por eles.

Baixei e instalei o xHarbour v. 1.2.1 (Simplex) (rev 6406) e BCC 5.5.1 (32 bits), fiz as algumas modificações nos PRGs como mandavam os posts.

Rodei o HBMAKE e deu um erro "Unsolved external _HB_FUN_SWPRUNCMD". Esta função é do Blinker 6 que usei para rodar programa externo, sugestão do Maligno para resolver um problema que estava enfrentando e que foi resolvido. Pergunto:

a) preciso eliminar esta função do meu programa e trocar por RUN?
b) existe função similar no xHarbour (eu achei uma tal de HB_OpenProcess, mas não sei se é relamente a mesma coisa)?

Além do mais, instalei também o xDev, fiz todas as configurações de acordo com o site do Vailton, mas a aplicação teste que fiz compilou e não rodou, abre apenas uma janela DOS preta e fica parada. Busquei a solução no fórum, mas não encontrei nada. Obs: usei o HBMAKE para o mesmo programa teste e funcionou perfeitamente.

Por fim, como faço para gerar um executável para 64bits? Pergunto porque tenho um cliente que usa Seven 64 e não mais consegur rodar o meu aplicativo.

Grato pela ajuda.

Simoreira
BHS
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 16 Out 2007 12:01
Localização: SOROCABA/SP

Re: Erro: "Unsolved external _HB_FUN_SWPRUNCMD"

Mensagem por BHS »

a funçao SWPRUNCMD só serve para o Clipper com o Blinker.

No xharbour use para executar um comando run esses :

- hb_openprocess( ) OU

- MYRUN( )
*****************************
function MYRUN( cComando )
local oShell, RET
oShell := CreateObject( "WScript.Shell" )
RET := oShell:Run( "%comspec% /c " + cComando, 0, .F. )
oShell := NIL
return iif( RET = 0, .T., .F. )
*****************************
Ja testei as duas e funciona perfeitamente
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Erro: "Unsolved external _HB_FUN_SWPRUNCMD"

Mensagem por alxsts »

Olá!

Minha praia xBase é Clipper. Mas, procurando na internet achei o código que posto abaixo. Talvez essa função exista no [x]Harbour.

Código: Selecionar todos

-HB_FUN_SWPRUNCMD
Ron Pinkas
/----------------------------------------------------------------------------------------------------//
FUNCTION SwpRunCmd( cCommand, nuMem, cRunPath, cTempPath )

   LOCAL nAt, cArgs, cPresetDisk, cPresetDir, nRet

   #ifndef DIR_SEPARATOR
      #ifdef __PLATFORM__Windows
         #define DIR_SEPARATOR '\'
      #else
         #define DIR_SEPARATOR '/'
      #endif
   #endif

   IF Empty( cRunPath )
      nAt := At( ' ', cCommand )

      IF nAt > 0
         cArgs := SubStr( cCommand, nAt )
         cCommand := Left( cCommand, nAt - 1 )
      ENDIF

      nAt := RAt( DIR_SEPARATOR, cCommand )

      IF nAt > 0
         cRunPath := Left( cCommand, nAt )
         cCommand := SubStr( cCommand, nAt + 1 ) + cArgs
      ENDIF
   ENDIF

   IF cRunPath[2] == ':'
      cPresetDisk := DiskName()

      IF ! DiskChange( cRunPath[1] )
         RETURN Throw( ErrorNew( "Blinker", 0, 1001, ProcName(), "Could not
         switch to drive: " + cRunPath[1], HB_aParams() ) )
      ENDIF

      cRunPath := SubStr( cRunPath, 3 )
   ENDIF

   IF ! Empty( cRunPath )
      cPresetDir := DIR_SEPARATOR + CurDir()

      IF DirChange( cRunPath ) != 0
         RETURN Throw( ErrorNew( "Blinker", 0, 1002, ProcName(), "Could not
         switch to folder: " + cRunPath, HB_aParams() ) )
      ENDIF
   ENDIF

   __Run( cCommand, @nRet )
   SwpErrLev( nRet )

   IF ! Empty( cPresetDisk )
      IF ! DiskChange( cPresetDisk )
         RETURN Throw( ErrorNew( "Blinker", 0, 1003, ProcName(), "Could not switch back to drive: " + cPresetDisk, HB_aParams() ) )
      ENDIF
   ENDIF

   IF ! Empty( cPresetDir )
      IF DirChange( cPresetDisk ) != 0
         RETURN Throw( ErrorNew( "Blinker", 0, 1004, ProcName(), "Could not
         switch back to folder: " + cPresetDir, HB_aParams() ) )
      ENDIF
   ENDIF

   RETURN nRet == 0

FUNCTION SwpErrLev( nLev )

   STATIC s_nLastLev := 0

   IF ValType( nLev ) == 'N'
      s_nLastLev := nLev
   ENDIF

   RETURN s_nLastLev
//----------------------------------------------------------------------------------------------------// 
Talvez seja útil. Com a palavra, os conhecedores da linguagem...
[]´s
Alexandre Santos (AlxSts)
simoreira
Usuário Nível 1
Usuário Nível 1
Mensagens: 40
Registrado em: 20 Ago 2004 16:21

Re: Erro: "Unsolved external _HB_FUN_SWPRUNCMD"

Mensagem por simoreira »

Obrigado amigos! Vou testar e posto o resultado. E quanto ao xDev, alguém poderia me ajudar a respeito dele? Compilo com o HBMAKE e tudo ok. Faço o mesmo no xDev e ele percorre todos os passos e gera o executável, mas este não roda, ou abre a tela e fica preta ou abre a tela preta e já sai do programa. Se alguém souber como resolver isto eu agradeço.

Simoreira
MarceloHenrique
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 06 Jul 2004 09:59
Localização: São Paulo - SP

Re: Erro: "Unsolved external _HB_FUN_SWPRUNCMD"

Mensagem por MarceloHenrique »

Caro Simoreira,

Sobre a xDev, na opção Projeto/Propriedades/ConfigurarCompiladoresSelecionados - opção "/N - Não definir função inicial autom." teste colocar SIM e compilar novamente.
Abraços.

Marcelo Henrique
simoreira
Usuário Nível 1
Usuário Nível 1
Mensagens: 40
Registrado em: 20 Ago 2004 16:21

Re: Erro: "Unsolved external _HB_FUN_SWPRUNCMD"

Mensagem por simoreira »

Prezado Marcelo Henrique,

Sobre sua dica, já havia incluído esta opção e mesmo assim o problema persistiu. Anexo a tela para verifcares como está a configuração do compilador.

Desde já obrigado.

Simoreira
TelaxDev.zip
Tela mostrando a configuração do compilador no xDev
(69.87 KiB) Baixado 90 vezes
MarceloHenrique
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 06 Jul 2004 09:59
Localização: São Paulo - SP

Re: Erro: "Unsolved external _HB_FUN_SWPRUNCMD"

Mensagem por MarceloHenrique »

Simoreira,

Poste exemplo do seu programa, principalmente o inicio, para verificarmos o que pode estar acontecendo.
Uso a xDev e a configuração está igual e aqui está rodando.
Não sou um especialista, apenas converti meu sistema clipper para xHarbour e ainda bato cabeça, mas já estou com tudo funcionando, mesmo ainda não explorando todos recursos.
Sobre aplicativos 64 bits, basta apenas compilar em (x)Harbour, pois gera aplicativo automaticamente em 32 bits, que roda perfeitamente no windows 7 64. O que não é possível é rodar um aplicativo clipper (16 bits).
simoreira
Usuário Nível 1
Usuário Nível 1
Mensagens: 40
Registrado em: 20 Ago 2004 16:21

Re: Erro: "Unsolved external _HB_FUN_SWPRUNCMD"

Mensagem por simoreira »

Marcelo Henrique,

Segue o módulo principal do programa. Ainda estou no início da conversão para xHarbour, sei pouca coisa, mas tentei seguir todos os passos a serem dados por um iniciante pelas dicas do fórum.

Segue o código:

Código: Selecionar todos

/*********************************
* conpec.prg - conpec()
* Sistema MG-ConPec 1.0
*
* SIM/MARCA/21.03.96
* éltima Atualiza‡Æo: SIM/21.03.96
*
*********************************/

// Variaveis

#include "Common.ch"
#include "Inkey.ch"
#include "Setcurs.ch"
#include "Error.ch"
#include "set.ch"
#include "dbstruct.ch"
#include "getpass.ch"
#include "Getexit.ch"


FUNCTION Main()

local aCamp:={}, aDire:={}
local nColuAtua
parameters pSenha, pAjud


if pSenha=NIL
  pSenha:=[xXxxxxx]
endif
if pAjud=NIL
  pAjud:=[xXxxxxx]
endif

// Teste de chamada da fun‡Æo FreeTSlice()
// FreeTSlice(30)

// ventres
set date british
set century on
private msg_tel:="MG - S‚rgio: (51) 3474-1891"
PRIVATE Nlf,Ncf,Nvordf,Nacheif:=0,Intxf:=0,Nrepete:=0,filtrot, nBusca:=0
PRIVATE Cbuscan:=SPACE(7),Cbuscaa:=SPACE(2),Cbuscaf:=SPACE(4), nAtualReg
private cIanr:=space(7), cIaar:="  ", cIafr:="    ", cIdBuscar:=space(13)
private cCodPr:=space(5), cCodFrig:=space(5)
public nVordLf
// touros
PRIVATE Nlt,Nct,Nacheit:=0,Intxt:=0,Nvordlt,Nvordt,cBusca:=SPACE(13)
PRIVATE cFilterOld, dDataComp:=date(), dDataInf:=date()
// comum
PRIVATE cCampo,cVcampo,cMascara,cValida,nModo,Cadeia, filtra
PRIVATE Ntrmarca:=0,Ntrpos,Racat:=0.0000,Icom:=0
PRIVATE Ani_old,Ani_old1,Ani_new,Ani_new1
PRIVATE Raca_old0:={},Raca_old:={},Raca_new:={}
PRIVATE Ninct:=0,Nget:=0,Nr1a6:=0

// menus
PRIVATE mp:=1,V_me:={},Esc_fim,dnd,Volta


// reprodu‡ao
PRIVATE nlr,ncr,Nincv:=0,Filtrov,nIncTer:=0,;
        nIncr:=0, nIncn:=0, nIncd:=0, nIncAlt:=0, nIncpd:=0, lErroNasc:=FALSE,;
        lAvisoBol:=FALSE, Posfr, cSafra:="   ", cFazSaf:="    ", lNovaSaf:=FALSE,;
        lSafAnt:=FALSE, lPriSaf:=FALSE, lUltSaf:=FALSE, cNomeFase:=" ",;
        lCriaSafBr:=False, cSafra1:="   ", cSafra2:="   ", pFs:=" ", nIncu:=0,;
        cMaeAntiga:=space(13)

public cEmpr:="", cEmprNome:="", empAtiva:=.F., cAnoo:="", lOffp:=TRUE
public cVers:="MG-ConPec 1.0M "
// public cVers:=" MG-ConPec X.X "
public cRede := "", nJane := ""
public x, y, cCaminho := "", lMostraGr:=FALSE, lArqUnico:=FALSE,;
       lNatura:=FALSE, lUsarMarca:=False, cOrdIndex:="I", cCpm:="1",;
       cAprDes:="1", cAprPos:="1", cAptPadrao:="", cEspPadrao:="",;
       lUsarTam:=False, cBaseUnico:="GERAL", lPartida:=False,;
       lPrecoce:=False

private aTouros:={}, aFiltro:={}, aGraus:={}, aComent:={}, aUsuar:={},;
        aFazendas:={}, aRetiro:={}, aLote:={}, aInsemin:={}, aGrupoMan:={},;
        aCateg:={}, aPelagem:={}, aGrSangue:={}, aReprod:={}, aSafra:={},;
        aMarca:={}, aTmp:={}, aVacas:={}, aGrRms:={}, aReg:={}, aOcor:={},;
        aAplOc:={}, aConfig:={}, aProp:={}, aSelePad:={}, aFrig:={},;
        aMovim:={}, aMortes:={}, aGta:={}, aSemen:={}, aPesag:={}, aMed:={},;
        aDP:={}, aFPdHb:={}, aFPdNe:={}, aFPdAb:={}, aFPfHb:={}, aFPfNE:={},;
        aFPfAb:={}, aGenSys10:={}, aGrTmp:={}, aSoNoGrupo:={}, aAdvElim:={},;
        aGrContemp:={}, aCeip:={}, aAnc:={}, aGenSys13:={}

caixa := replicate("_",9)
caix2 := "+-+Ý+-+Ý"
  
// Base de Dados
// Estrutura do arquivo CONFIG
aadd(aConfig,{"coratual","L",1,0})
aadd(aConfig,{"rapido","L",1,0})
aadd(aConfig,{"config","C",8,0})
aadd(aConfig,{"empresa","C",35,0})
aadd(aConfig,{"telefone","C",18,0})
aadd(aConfig,{"impressora","C",10,0})
aadd(aConfig,{"linhacalcu","N",2,0})
aadd(aConfig,{"colunacalc","N",2,0})
aadd(aConfig,{"decimalcal","N",1,0})
aadd(aConfig,{"mensagem",[C],5,0})
aadd(aConfig,{"som","L",1,0})
aadd(aConfig,{"porta","N",1,0})
aadd(aConfig,{"avisos","L",1,0})
aadd(aConfig,{"uea","C",3,0})

// Estrutura do arquivo de usu rios
aadd(aUsuar,{"cod_faz","C",4,0})
aadd(aUsuar,{"empresa","C",50,0})
aadd(aUsuar,{"respons","C",40,0})
aadd(aUsuar,{"estabel","C",40,0})
aadd(aUsuar,{"endereco","C",40,0})
aadd(aUsuar,{"cidade","C",30,0})
aadd(aUsuar,{"cep","C",9,0})
aadd(aUsuar,{"desc_fl","C",1,0})
aadd(aUsuar,{"raca","C",2,0})
aadd(aUsuar,{"mostragr","C",1,0})
aadd(aUsuar,{"arqunitou","C",1,0})
aadd(aUsuar,{"baseunico","C",8,0})
aadd(aUsuar,{"natura","C",1,0})
aadd(aUsuar,{"marca","C",1,0})
aadd(aUsuar,{"ultsafra","C",3,0})
aadd(aUsuar,{"ordem","C",1,0})
aadd(aUsuar,{"aprescpm","C",1,0})
aadd(aUsuar,{"apresdes","C",1,0})
aadd(aUsuar,{"aprespos","C",1,0})
aadd(aUsuar,{"especie","C",3,0})
aadd(aUsuar,{"aptidao","C",5,0})
aadd(aUsuar,{"usar_tam","C",1,0})
aadd(aUsuar,{"partida","C",1,0})
aadd(aUsuar,{"precoce","C",1,0})
aadd(aUsuar,{"saida","C",1,0})

// arquivo com os dados de vacas e produtos
aadd(aVacas,{"ident","C",15,0})      // Identifica‡Æo mestre do animal
aadd(aVacas,{"ian","C",7,0})         // Tatuagem do animal
aadd(aVacas,{"iaa","C",2,0})         // Ano de nascimento
aadd(aVacas,{"iaf","C",4,0})         // Fazenda de nascimento
aadd(aVacas,{"marca","C",1,0})       // Marca de identifica‡Æo
aadd(aVacas,{"nro_sisbov","N",14,0}) // Nro. do SISBOV do animal
aadd(aVacas,{"nrosisbov","C",14,0})  // Nro. do SISBOV do animal (Carcacter)
aadd(aVacas,{"i_ani","C",13,0})      // Identifica‡Æo estilo "touros"
aadd(aVacas,{"i_ape","C",13,0})      // Apelido do animal
aadd(aVacas,{"i_reg","C",13,0})      // Registro do animal                                                         
aadd(aVacas,{"mansisbov","C",6,0})   // Nro manejo Sisbov
aadd(aVacas,{"i_mae_n","C",7,0})     // Tat da mÆe natural (barriga)
aadd(aVacas,{"i_mae_a","C",2,0})     // Ano de nasc da mÆe natural (barriga)
aadd(aVacas,{"i_mae_f","C",4,0})     // Faz de nasc da mÆe natural (barriga)
aadd(aVacas,{"marcam","C",1,0})      // Marca de identica‡Æo da mÆe
aadd(aVacas,{"i_gen_n","C",7,0})     // Tat da mÆe gen‚tica
aadd(aVacas,{"i_gen_a","C",2,0})     // Ano de nasc da mÆe gen‚tica
aadd(aVacas,{"i_gen_f","C",4,0})     // Faz de nasc da mÆe gen‚tica
aadd(aVacas,{"i_ama_n","C",7,0})     // Tat da mÆe ama
aadd(aVacas,{"i_ama_a","C",2,0})     // Ano de nasc da mÆe ama
aadd(aVacas,{"i_ama_f","C",4,0})     // Faz de nasc da mÆe ama
aadd(aVacas,{"codgsm","C",4,0})      // C¢d. de grau de sangue da mÆe nat
aadd(aVacas,{"codgenm","C",4,0})     // C¢d de grau de sangue da mÆe gensys
aadd(aVacas,{"rast_mae","C",1,0})    // Identificador rastreabilidade da mÆe
aadd(aVacas,{"i_pai","C",13,0})      // Identifica‡Æo do pai (MESTRE)
aadd(aVacas,{"r1","C",2,0})          // C¢digo da ra‡a 1
aadd(aVacas,{"g1","N",6,4})          // Composi‡Æo da ra‡a 1
aadd(aVacas,{"r2","C",2,0})          // C¢digo da ra‡a 2
aadd(aVacas,{"g2","N",6,4})          // Composi‡Æo da ra‡a 2
aadd(aVacas,{"r3","C",2,0})          // C¢digo da ra‡a 3
aadd(aVacas,{"g3","N",6,4})          // Composi‡Æo da ra‡a 3
aadd(aVacas,{"r4","C",2,0})          // C¢digo da ra‡a 4
aadd(aVacas,{"g4","N",6,4})          // Composi‡Æo da ra‡a 4
aadd(aVacas,{"r5","C",2,0})          // C¢digo da ra‡a 5
aadd(aVacas,{"g5","N",6,4})          // Composi‡Æo da ra‡a 5
aadd(aVacas,{"r6","C",2,0})          // C¢digo da ra‡a 6
aadd(aVacas,{"g6","N",6,4})          // Composi‡Æo da ra‡a 6
aadd(aVacas,{"codgs","C",4,0})       // C¢d. do grau de sangue do animal
aadd(aVacas,{"codgen","C",4,0})      // C¢d. grau de sangue para GenSys
aadd(aVacas,{"codcat","C",6,0})      // C¢digo da categoria do animal
aadd(aVacas,{"comrep","C",3,0})      // Coment rio na reprodu‡Æo
aadd(aVacas,{"touroins","C",13,0})   // Touro indicado para IA
aadd(aVacas,{"tserv1","C",1,0})      // Tipo do 1§ servi‡o (I/C)
aadd(aVacas,{"touros1","C",13,0})    // Touro do 1§ servi‡o
aadd(aVacas,{"datas1","D",8,0})      // Data do 1§ servi‡o
aadd(aVacas,{"part1","C",10,0})      // partida do 1§ servico
aadd(aVacas,{"horas1","C",1,0})      // Turno do 1§ servico
aadd(aVacas,{"insem1","C",2,0})      // Inseminador do 1§ servi‡o
aadd(aVacas,{"tserv2","C",1,0})      // Tipo do 2§ servi‡o (I/C)
aadd(aVacas,{"touros2","C",13,0})    // Touro do 2§ servi‡o
aadd(aVacas,{"datas2","D",8,0})      // Data do 2§ servi‡o
aadd(aVacas,{"part2","C",10,0})      // partida do 2§ servico
aadd(aVacas,{"horas2","C",1,0})      // Turno do 2§ servi‡o
aadd(aVacas,{"insem2","C",2,0})      // Inseminador do 2§ servi‡o
aadd(aVacas,{"tserv3","C",1,0})      // Tipo do 3§ servi‡o (I/C)
aadd(aVacas,{"touros3","C",13,0})    // Touro do 3§ servi‡o
aadd(aVacas,{"datas3","D",8,0})      // Data do 3§ servi‡o
aadd(aVacas,{"part3","C",10,0})      // partida do 3§ servico
aadd(aVacas,{"horas3","C",1,0})      // Hora do 3§ servi‡o
aadd(aVacas,{"insem3","C",2,0})      // Inseminador do 3§ servi‡o
aadd(aVacas,{"tmonta1","C",13,0})    // Touro do 1§ per¡odo de monta
aadd(aVacas,{"entrada1","D",8,0})    // Data de entrada do 1§ per¡odo
aadd(aVacas,{"saida1","D",8,0})      // Data de sa¡da do 1§ per¡odo
aadd(aVacas,{"tmonta2","C",13,0})    // Touro do 2§ per¡odo de monta
aadd(aVacas,{"entrada2","D",8,0})    // Data de entrada do 2§ per¡odo
aadd(aVacas,{"saida2","D",8,0})      // Data de Saida do 2§ per¡odo
aadd(aVacas,{"gmrep","C",3,0})       // Grupo de manejo na reprodu‡Æo
aadd(aVacas,{"dg","C",1,0})          // Diagn¢stico de gesta‡Æo (toque)
aadd(aVacas,{"sf","D",8,0})          // Data do £ltimo servi‡o
aadd(aVacas,{"datapes1","D",8,0})    // Data da 1¦ pesagem na reprodu‡Æo
aadd(aVacas,{"pesorep1","N",4,0})    // Peso da 1¦ pesagem na reprodu‡Æo
aadd(aVacas,{"ccorp1","C",1,0})      // Condi‡Æo corporal na 1¦ pesagem
aadd(aVacas,{"alt1","C",3,0})        // Altura da vaca na 1¦ pesagem
aadd(aVacas,{"comnasc","C",3,0})     // Coment rio ao nascer
aadd(aVacas,{"commae","C",3,0})      // Coment rio da mÆe no nascimento
aadd(aVacas,{"sexo","C",1,0})        // Sexo no nacimento
aadd(aVacas,{"dnasc","D",8,0})       // Data de nascimento
aadd(aVacas,{"peson","N",2,0})       // Peso ao nascer
aadd(aVacas,{"tamnasc","C",1,0})     // Tamanho ao nascer
aadd(aVacas,{"distoc","N",1,0})      // Grau de distocia
aadd(aVacas,{"comte","C",2,0})       // Indica‡Æo que ‚ TE
aadd(aVacas,{"ge_ex","C",2,0})       // Indica‡Æo de que ‚ gˆmeos ou enxerto
aadd(aVacas,{"comnm","C",2,0})       // Indica‡Æo de que nasceu morto
aadd(aVacas,{"ts","C",1,0})          // Tipo Serv determinante de paternid
aadd(aVacas,{"pigocul","C",1,0})     // C¢digo de pigmenta‡Æo ocular
aadd(aVacas,{"gmnasc","C",3,0})      // Grupo de manejo ao nascer
aadd(aVacas,{"d_com","C",3,0})       // Coment rio ao desmame
aadd(aVacas,{"d_sex","C",1,0})       // Sexo no desmame
aadd(aVacas,{"pesov","N",3,0})       // Peso da vaca
aadd(aVacas,{"datad","D",8,0})       // Data do desmame convencional
aadd(aVacas,{"pesod","N",3,0})       // Peso ao desmame convencional
aadd(aVacas,{"datad2","D",8,0})      // Data do desmame precoce
aadd(aVacas,{"pesod2","N",3,0})      // Peso do desmame precoce
aadd(aVacas,{"d_datacpm","D",8,0})   // Data da avalia‡Æo CPMU desmame
aadd(aVacas,{"d_conf","C",1,0})      // Conforma‡Æo no desmame
aadd(aVacas,{"d_prec_g","C",1,0})    // Precocidade no desmame
aadd(aVacas,{"d_musc","C",1,0})      // Musculatura no desmame
aadd(aVacas,{"d_tam","C",1,0})       // Tamanho no desmame
aadd(aVacas,{"d_pelame","C",1,0})    // Pelame no desmame
aadd(aVacas,{"ad","C",1,0})          // Aprumos no desmame/Caract. racial
aadd(aVacas,{"d_pu","C",1,0})        // Prep/Umbigo no desmame
aadd(aVacas,{"d_altg","C",3,0})      // Altura de garupa no desmame
aadd(aVacas,{"d_gm","C",3,0})        // Grupo de manejo no desmame
aadd(aVacas,{"d_faz","C",4,0})       // Fazenda no desmame
aadd(aVacas,{"ectopar","N",3,0})     // Nro. de ectoparasitas (amostragem)
aadd(aVacas,{"ectopar2","C",3,0})    // Nro. de ectoparasitas (amostragem)
aadd(aVacas,{"data_ecto","D",8,0})   // Data contagem ectoparasitas
aadd(aVacas,{"gm_ecto","C",3,0})     // GM para ectoparasitas
aadd(aVacas,{"peso_ecto","N",3,0})   // peso na data da contagem ectopar
aadd(aVacas,{"p_com","C",3,0})       // Coment rio no p¢s-desmame
aadd(aVacas,{"p_sex","C",1,0})       // Sexo no p¢s-desmame
aadd(aVacas,{"datas","D",8,0})       // Data do p¢s-desmame convencional
aadd(aVacas,{"pesos","N",3,0})       // Peso no p¢s-desmame convencional
aadd(aVacas,{"datap2","D",8,0})      // Data 2¦ pesagem p¢s-desmame
aadd(aVacas,{"pesos2","N",3,0})      // Peso 2¦ pesagem p¢s-desmame
aadd(aVacas,{"p_datacpm","D",8,0})   // Data da avalia‡Æo CPMU p¢s-desmame
aadd(aVacas,{"p_conf","C",1,0})      // Conforma‡Æo no p¢s-desmame
aadd(aVacas,{"p_prec_g","C",1,0})    // Precocidade no p¢s-desmame
aadd(aVacas,{"p_musc","C",1,0})      // Musculatura no p¢s-desmame
aadd(aVacas,{"p_tam","C",1,0})       // Tamanho no p¢s-desmame
aadd(aVacas,{"p_pelame","C",1,0})    // Pelame no p¢s-desmame
aadd(aVacas,{"p_pu","C",1,0})        // Prep/Umbigo no p¢s-desmame
aadd(aVacas,{"p_altg","C",3,0})      // Altura de garupa no p¢s-desmame
aadd(aVacas,{"p_temp","C",1,0})      // Temperamento do animal
aadd(aVacas,{"as","C",1,0})          // Aprumos no p¢s-desmame
aadd(aVacas,{"p_dia_pe","D",8,0})    // Data da medi‡Æo do Per.Escrotal
aadd(aVacas,{"p_pe","N",4,1})        // Per¡metro escrotal
aadd(aVacas,{"peso_pe","N",3,0})     // Peso na medi‡Æo Per¡metro escrotal
aadd(aVacas,{"p_gm","C",3,0})        // Grupo de manejo no p¢s-desmame
aadd(aVacas,{"p_faz","C",4,0})       // Fazenda no p¢s-desmame
aadd(aVacas,{"armaepos","C",3,0})    // Retiro da vaca no p¢s-desmame
aadd(aVacas,{"aol","N",6,2})         // µrea de gordura de lombo
aadd(aVacas,{"egs","N",4,1})         // espessura de gordura subcutanea
aadd(aVacas,{"egsp","N",4,1})        // EGS Picanha
aadd(aVacas,{"dataus","D",8,0})      // Data do ultrasom
aadd(aVacas,{"tc","C",2,0})          // T‚cnico de campo ultrasom
aadd(aVacas,{"tl","C",2,0})          // T‚cnico de laborat¢rio ultrasom
aadd(aVacas,{"eq","C",2,0})          // Equipamento ultrasom
aadd(aVacas,{"pesous","N",3,0})      // Peso no ultrasom
aadd(aVacas,{"gmus","C",3,0})        // Grupo de manejo no ultrasom
aadd(aVacas,{"ac","C",3,0})          // Coment rio atual
aadd(aVacas,{"a_dia","D",8,0})       // Data da £ltima pesagem
aadd(aVacas,{"a_kg","N",4,0})        // peso da £ltima pesagem
aadd(aVacas,{"a_cc","C",1,0})        // Condi‡Æo corporal da £lt.pesagem
aadd(aVacas,{"a_alt","C",3,0})       // Altura na £ltima pesagem
aadd(aVacas,{"a_pu","C",1,0})        // Prep/Umbigo atual
aadd(aVacas,{"a_abm","C",1,0})       // Aspado, batoque ou mocho
aadd(aVacas,{"a_cor","C",1,0})       // Pelagem atual
aadd(aVacas,{"al","C",3,0})          // lote atual
aadd(aVacas,{"ar","C",3,0})          // Retiro atual
aadd(aVacas,{"af","C",4,0})          // Fazenda atual (usada na comp.safra)
aadd(aVacas,{"rastrear","C",1,0})    // Identificador para a rastreabilidade
aadd(aVacas,{"ped_inscr","C",1,0})   // Marcador de pedido de inscri‡Æo na Certif
aadd(aVacas,{"tre","C",1,0})         // Marcador para animais a transferir
aadd(aVacas,{"tri","C",1,0})         // Marcador para animais transf de outra faz
aadd(aVacas,{"tok","C",1,0})         // Marcador para animais j  transferidos
aadd(aVacas,{"tf","C",1,0})          // Marcador da fase para transferˆncia
aadd(aVacas,{"safra","C",3,0})       // safra atual em que est  trabalhando
aadd(aVacas,{"safran","C",3,0})      // Safra de nascimento
aadd(aVacas,{"ultsafra","C",3,0})    // Safra anterior … safra atual
aadd(aVacas,{"ww","C",1,0})          // Controlador de fˆmeas/reprodu‡Æo
		  
// arquivo com os dados dos touros pais usados no sistema
aadd(aTouros,{"i_ani","C",13,0})      // Tatuagem do touro
aadd(aTouros,{"i_ape","C",13,0})      // Apelido do touro
aadd(aTouros,{"i_reg","C",13,0})      // Registro do touro
aadd(aTouros,{"i_dig","C",10,0})      // C¢digo de digita‡Æo
aadd(aTouros,{"ian","C",7,0})         // Tatuagem do touro
aadd(aTouros,{"iaa","C",2,0})         // Ano de nascimento
aadd(aTouros,{"iaf","C",4,0})         // Fazenda de nascimento
aadd(aTouros,{"marca","C",1,0})       // Marca identificadora
aadd(aTouros,{"mestre","C",13,0})     // Nome usado no campo PAI 
aadd(aTouros,{"i_ant","C",2,0})       // Ano de nascimento do touro
aadd(aTouros,{"i_mae_n","C",7,0})     // Identifica‡Æo da mÆe do touro
aadd(aTouros,{"i_mae_a","C",2,0})     // Ano nascimento da mÆe do touro
aadd(aTouros,{"i_mae_f","C",4,0})     // Fazenda de nascimento mÆe do touro
aadd(aTouros,{"i_mae","C",13,0})      // MÆe do touro
aadd(aTouros,{"i_pai","C",13,0})      // Pai do touro
aadd(aTouros,{"r1","C",2,0})          // C¢digo da ra‡a 1
aadd(aTouros,{"g1","N",6,4})          // Composi‡Æo da ra‡a 1
aadd(aTouros,{"r2","C",2,0})          // C¢digo da ra‡a 2
aadd(aTouros,{"g2","N",6,4})          // Composi‡Æo da ra‡a 2
aadd(aTouros,{"r3","C",2,0})          // C¢digo da ra‡a 3
aadd(aTouros,{"g3","N",6,4})          // Composi‡Æo da ra‡a 3
aadd(aTouros,{"r4","C",2,0})          // C¢digo da ra‡a 4
aadd(aTouros,{"g4","N",6,4})          // Composi‡Æo da ra‡a 4
aadd(aTouros,{"r5","C",2,0})          // C¢digo da ra‡a 5
aadd(aTouros,{"g5","N",6,4})          // Composi‡Æo da ra‡a 5
aadd(aTouros,{"r6","C",2,0})          // C¢digo da ra‡a 6
aadd(aTouros,{"g6","N",6,4})          // Composi‡Æo da ra‡a 6
aadd(aTouros,{"codgs","C",4,0})       // C¢digo do grau de sangue do touro
aadd(aTouros,{"codgen","C",4,0})      // C¢d. de g.sangue usado pelo GenSys
aadd(aTouros,{"codcat","C",6,0})      // C¢digo da categoria do touro
aadd(aTouros,{"ac","C",3,0})          // Coment rio atual
aadd(aTouros,{"a_ts","C",1,0})        // Tipo de Servi‡o do touro
aadd(aTouros,{"cr","C",1,0})          // Caracteriza‡Æo racial
aadd(aTouros,{"pigocul","C",1,0})     // Pigmenta‡Æo Ocular
aadd(aTouros,{"a_dia","D",8,0})       // Data da pesagem do touro
aadd(aTouros,{"a_kg","N",4,0})        // Peso do touro
aadd(aTouros,{"a_cc","C",1,0})        // Condi‡Æo corporal do touro
aadd(aTouros,{"a_pu","C",1,0})        // Prep£cio/Umbigo do touro
aadd(aTouros,{"a_abm","C",1,0})       // Aspas (Aspado, Batoque, Mocho)
aadd(aTouros,{"a_cor","C",1,0})       // Pelagem do touro
aadd(aTouros,{"al","C",3,0})          // Lote Atual
aadd(aTouros,{"ar","C",3,0})          // Retiro Atual
aadd(aTouros,{"af","C",4,0})          // Fazenda Atual
aadd(aTouros,{"a_pe","N",4,1,0})      // Per¡metro Escrotal atual
aadd(aTouros,{"descricao","C",78,0})  // Nome do touro/obs/composi‡Æo RM
aadd(aTouros,{"nro_sisbov","N",14,0}) // N£mero do animal no SISBOV
aadd(aTouros,{"nrosisbov","C",14,0})  // N£mero do animal no SISBOV (caracter)
aadd(aTouros,{"mansisbov","C",6,0})   // N£mero de Manejo do SISBOV (caracter)
aadd(aTouros,{"rastrear","C",1,0})    // Identificador para a rastreabilidade
aadd(aTouros,{"ped_inscr","C",1,0})   // Marcador de pedido de inscri‡Æo na Certif

// Arquivo com as descri‡äes e condi‡äes para os filtros
aadd(aFiltro,{"descr_1","C",32,0})
aadd(aFiltro,{"descr_2","C",30,0})
aadd(aFiltro,{"descr_3","C",7,0})
aadd(aFiltro,{"descr_4","C",8,0})
aadd(aFiltro,{"descr_5","C",14,0})
aadd(aFiltro,{"descr_6","C",33,0})
aadd(aFiltro,{"descr_7","C",19,0})
aadd(aFiltro,{"descr_8","C",10,0})
aadd(aFiltro,{"descr_9","C",10,0})
aadd(aFiltro,{"descr_10","C",10,0})
aadd(aFiltro,{"descr_11","C",30,0})
aadd(aFiltro,{"descr_12","C",140,0})
aadd(aFiltro,{"descr_13","C",50,0})
aadd(aFiltro,{"descr_14","C",6,0})
aadd(aFiltro,{"codig_1", "C",45,0})
aadd(aFiltro,{"codig_2","C",51,0})
aadd(aFiltro,{"codig_3","C",6,0})
aadd(aFiltro,{"codig_4","C",6,0})
aadd(aFiltro,{"codig_5","C",12,0})
aadd(aFiltro,{"codig_6","C",51,0})
aadd(aFiltro,{"codig_7","C",35,0})
aadd(aFiltro,{"codig_8","C",8,0})
aadd(aFiltro,{"codig_9","C",8,0})
aadd(aFiltro,{"codig_10","C",8,0})
aadd(aFiltro,{"codig_11","C",105,0})
aadd(aFiltro,{"codig_12","C",298,0})
aadd(aFiltro,{"codig_13","C",250,0})
aadd(aFiltro,{"codig_14","C",24,0})
aadd(aFiltro,{"tipo","C",1,0})

// arquivo com os c¢digos de coment rios
aadd(aComent,{"codigo","C",3,0})      // C¢digo do coment rio
aadd(aComent,{"descricao","C",35,0})  // Descri‡Æo do coment rio
aadd(aComent,{"tipo","C",1,0})        // C¢digo do Tipo do coment rio
				    
// arquivo com os c¢digos de fazendas
aadd(aFazendas,{"codigo","C",4,0})    // C¢digo da fazenda
aadd(aFazendas,{"nome_faz","C",30,0}) // Nome da fazenda
aadd(aFazendas,{"nome_pro","C",30,0}) // Propriet rio

// arquivo com os c¢digos de retiros
aadd(aRetiro,{"codigo","C",3,0})      // C¢digo do retiro
aadd(aRetiro,{"codfaz","C",4,0})      // Fazenda de localiza‡Æo do ret
aadd(aRetiro,{"nome_ret","C",30,0})   // Nome do retiro
aadd(aRetiro,{"nome_res","C",30,0})   // Nome do respons vel pelo ret

// arquivo com os c¢digos de lote
aadd(aLote,{"codigo","C",3,0})        // C¢digo do lote
aadd(aLote,{"codfaz","C",4,0})        // Fazenda de localiza‡Æo do lot
aadd(aLote,{"descricao","C",30,0})    // Descri‡Æo do lote

// arquivo com os c¢digos de inseminadores
aadd(aInsemin,{"codigo","C",2,0})     // C¢digo do Inseminador
aadd(aInsemin,{"nome_ins","C",30,0})  // Nome do inseminador

// arquivo dos grupos de manejo
aadd(aGrupoMan,{"codigo","C",3,0})     // C¢digo do grupo de manejo
aadd(aGrupoMan,{"descricao","C",50,0}) // Descricao fase nasc/desm
aadd(aGrupoMan,{"fase","C",1,0})       // Fase de informa‡Æo do grupo
aadd(aGrupoMan,{"codfaz","C",4,0})     // Fazenda do localiza‡Æo do GM
aadd(aGrupoMan,{"safra","C",3,0})      // Safra em que foi utilizado

// Extra¡dos do arquivo de grupo de manejo
//aadd(aGrupoMan, {"descrep", "C", 80, 0})    // Descricao fase reproducao
//aadd(aGrupoMan, {"descrpos", "C", 30, 0})  // Descricao fase desm/pos-desm

// arquivo das categorias
aadd(aCateg,{"codcat","C",6,0})        // C¢digo da categoria
aadd(aCateg,{"ano","C",2,0})
aadd(aCateg,{"descricao","C",30,0})    // Nome da categoria

// arquivo com os c¢digos de grau de sangue gerados pelos sistema
aadd(aGrSangue,{"codgs","C",4,0})   // C¢digo do grau de sangue
aadd(aGrSangue,{"codgen","C",4,0})  // C¢digo usado pelo GenSys
aadd(aGrSangue,{"descricao","C",60,0}) // Descr fracion ria do g.sangue
aadd(aGrSangue,{"r1","C",2,0})       // C¢digo da ra‡a 1
aadd(aGrSangue,{"g1","N",6,4})       // Composi‡Æo da ra‡a 1
aadd(aGrSangue,{"r2","C",2,0})       // C¢digo da ra‡a 2
aadd(aGrSangue,{"g2","N",6,4})       // Composi‡Æo da ra‡a 2
aadd(aGrSangue,{"r3","C",2,0})       // C¢digo da ra‡a 3
aadd(aGrSangue,{"g3","N",6,4})       // Composi‡Æo da ra‡a 3
aadd(aGrSangue,{"r4","C",2,0})       // C¢digo da ra‡a 4
aadd(aGrSangue,{"g4","N",6,4})       // Composi‡Æo da ra‡a 4
aadd(aGrSangue,{"r5","C",2,0})       // C¢digo da ra‡a 5
aadd(aGrSangue,{"g5","N",6,4})       // Composi‡Æo da ra‡a 5
aadd(aGrSangue,{"r6","C",2,0})       // C¢digo da ra‡a 6
aadd(aGrSangue,{"g6","N",6,4})       // Composi‡Æo da ra‡a 6
aadd(aGrSangue,{"empresa","C",4,0})  // C¢digo da empresa 

// arquivo com os c¢digos de pelagem
aadd(aPelagem,{"codigo","C",2,0})      // C¢digo da pelagem
aadd(aPelagem,{"descricao","C",20,0})  // Descricao da pelagem

// arquivo contendo os dados de monta geral para aplica‡Æo
aadd(aReprod,{"fazenda","C",4,0})     // C¢d. da fazenda p/aplic monta
aadd(aReprod,{"lote","C",3,0})        // C¢d. do lote p/aplic monta
aadd(aReprod,{"retiro","C",3,0})      // C¢d. do retiro p/aplic monta
aadd(aReprod,{"gm","C",3,0})          // C¢d. do grupo de manejo
aadd(aReprod,{"codcat","C",6,0})      // C¢d. da categoria p/aplic monta
aadd(aReprod,{"codgs","C",4,0})       // C¢d. do g.sangue p/aplic monta
aadd(aReprod,{"inicial","C",2,0})     // Ano inicial para idade da vaca
aadd(aReprod,{"final","C",2,0})       // Ano final para idade da vaca
aadd(aReprod,{"tmonta1","C",13,0})    // Touro 1 usado na monta
aadd(aReprod,{"entrada1","D",8,0})    // Data da entrada do touro 1
aadd(aReprod,{"saida1","D",8,0})      // data da sa¡da do touro 1 
aadd(aReprod,{"tmonta2","C",13,0})    // Touro 2 usado na monta
aadd(aReprod,{"entrada2","D",8,0})    // Data da entrada do touro 2
aadd(aReprod,{"saida2","D",8,0})      // data da sa¡da do touro 2 
aadd(aReprod,{"ativo","C",1,0})       // Controla reg ativo/inativo
aadd(aReprod,{"safra","C",3,0})       // Safra na qual ser  aplic monta

// arquivo contendo as safras geradas para cada fazenda
aadd(aSafra,{"fazsaf","C",7,0})       // Fazenda e Safra gerados pelo sist

// Arquivo com os c¢digos e descri‡äes das marcas e sinais
aadd(aMarca,{"marca","C",1,0})        // C¢digo da marca (marca em si)
aadd(aMarca,{"descricao","C",30,0})   // Descricao da marca

// Arquivo tempor rio com os dados de reprodu‡Æo
aadd(aTmp,{"i_mae_n","C",7,0})     // Ident. da mÆe do terneiro
aadd(aTmp,{"i_mae_a","C",2,0})     // Ano de nasc. da mÆe
aadd(aTmp,{"i_mae_f","C",4,0})     // Fazenda de nasc. da mÆe
aadd(aTmp,{"marcam","C",1,0})      // Marca ident. da mÆe
aadd(aTmp,{"i_gen_n","C",7,0})     // Ident. da mÆe gen‚tica do terneiro
aadd(aTmp,{"i_gen_a","C",2,0})     // Ano de nasc. da mÆe gen‚tica
aadd(aTmp,{"i_gen_f","C",4,0})     // Fazenda de nasc da mÆe gen‚tica
aadd(aTmp,{"codgsm","C",4,0})      // C¢d. grau de sangue da mÆe
aadd(aTmp,{"codgenm","C",4,0})     // C¢d. grau de sangue p/ GenSys
aadd(aTmp,{"codcat","C",6,0})      // C¢d. da categoria da mÆe
aadd(aTmp,{"gmrep","C",3,0})       // Grupo manejo na reprodu‡Æo
aadd(aTmp,{"al","C",3,0})          // Lote atual da mÆe
aadd(aTmp,{"ar","C",3,0})          // Retiro atual da mÆe
aadd(atmp,{"af","C",4,0})          // Fazenda atual da mÆe
aadd(aTmp,{"ut","C",1,0})          // Resultado do £ltimo toque
aadd(aTmp,{"armaepos","C",3,0})    // Retiro da mÆe no p¢s
aadd(aTmp,{"safra","C",3,0})       // Safra que est  sendo trabalhada
aadd(aTmp,{"safran","C",3,0})      // Safra de nascimento dos terneiros
aadd(aTmp,{"ww","C",1,0})          // Controlador de fˆmeas em reproducÆo

// Arquivo que conter  os touros que fazem parte dos RMs
aadd(aGrRms,{"mestre","C",13,0})   // Identifica‡Æo do RM
aadd(aGrRms,{"touro","C",13,0})    // Identifica‡Æo do touro integrante
aadd(aGrRms,{"ian","C",7,0})       // Tatuagem do touro
aadd(aGrRms,{"iaa","C",2,0})       // Ano de nascimento do touro
aadd(aGrRms,{"iaf","C",4,0})       // Fazenda de nascimento do touro
aadd(aGrRms,{"safra","C",3,0})     // Safra de trabalho do RM

// Arquivo que conter  os registros dos animais (machos e fˆmeas)
aadd(aReg,{"i_ani","C",13,0})          // Identifica‡Æo do animal (machos)
aadd(aReg,{"ian","C",7,0})             // Identifica‡Æo (fˆmea)
aadd(aReg,{"iaa","C",2,0})             // Ano (fˆmea)
aadd(aReg,{"iaf","C",4,0})             // fazenda (fˆmea)
aadd(aReg,{"ident","C",15,0})          // Identifica‡Æo ian+' '+iaa+' '+iaf
aadd(aReg,{"apelido","C",13,0})        // Apelido do animal
aadd(aReg,{"registro","C",13,0})       // Registro do animal
aadd(aReg,{"tatuagem","C",10,0})       // Tatuagem do animal
aadd(aReg,{"dnasc","D",8,0})           // Data de nascimento do animal
aadd(aReg,{"sexo","C",1,0})            // Sexo do animal
aadd(aReg,{"pelagem","C",1,0})         // C¢digo da Pelagem do animal
aadd(aReg,{"codgs","C",4,0})           // C¢d. do grau de sangue do animal
aadd(aReg,{"pai","C",13,0})            // Identifica‡Æo do Pai
aadd(aReg,{"i_mae_n","C",7,0})         // Tat da mÆe natural
aadd(aReg,{"i_mae_a","C",2,0})         // Ano de nasc da mÆe natural
aadd(aReg,{"i_mae_f","C",4,0})         // Faz de nasc da mÆe natural
aadd(aReg,{"nome","C",50,0})           // Nome do animal (para PP)
aadd(aReg,{"classif","C",5,0})         // Classifica‡Æo dentro da ra‡a
aadd(aReg,{"regdef","C",1,0})          // Possui registro definitivo? 
aadd(aReg,{"aprestec","C",1,0})        // Foi apresentado ao t‚cnico
aadd(aReg,{"tatpai","C",6,0})          // Tatuagem do pai do animal
aadd(aReg,{"nomepai","C",50,0})        // Nome do pai do animal
aadd(aReg,{"regpai","C",10,0})         // Registro do pai
aadd(aReg,{"tatmae","C",6,0})          // Tatuagem da mÆe
aadd(aReg,{"nomemae","C",50,0})        // Nome da mÆe
aadd(aReg,{"regmae","C",10,0})         // Registro da mÆe
aadd(aReg,{"idavom","C",10,0})         // Identifica‡Æo do av“ materno
aadd(aReg,{"nomeavom","C",50,0})       // Nome do av“ materno
aadd(aReg,{"regavom","C",10,0})        // Registro do av“ materno
aadd(aReg,{"gruporac","C",3,0})        // grupo racial (PO,PC,PPC,BRA)
aadd(aReg,{"baixa","C",3,0})           // C¢digo para baixa do animal
aadd(aReg,{"inform","M",10,0})         // Campo para outras informa‡”es

// Arquivo de Ocorrˆncias
aadd(aOcor,{"ian","C",7,0})            // Tatuagem do animal
aadd(aOcor,{"iaa","C",2,0})            // Ano de nascimento
aadd(aOcor,{"iaf","C",4,0})            // Fazenda de nascimento
aadd(aOcor,{"data","D",8,0})           // Data da ocorrˆncia
aadd(aOcor,{"codcom","C",3,0})         // C¢digo de coment rio
aadd(aOcor,{"desccom","C",80,0})       // Descri‡Æo do Coment rio para complementar
aadd(aOcor,{"tipo","C",1,0})           // Tipo V=Vaca, P=Produto, T=Touro
aadd(aOcor,{"classoc","C",1,0})        // Classifica‡Æo da ocorrˆncia
aadd(aOcor,{"safra","C",3,0})          // Safra de cadastramento do animal
aadd(aOcor,{"af","C",4,0})             // Fazenda de localiza‡Æo
aadd(aOcor,{"codcat","C",6,0})         // Categoria
aadd(aOcor,{"ar","C",3,0})             // Retiro
aadd(aOcor,{"al","C",3,0})             // Lote




// Fatores de pondera‡Æo indice desmama das ra‡as Hereford/Braford
aadd(aFPdHb,5.2)
aadd(aFPdHb,1.0)
aadd(aFPdHb,1.9)
aadd(aFPdHb,1.9)
// Fatores de pondera‡Æo indice desmama da ra‡a Nelore
aadd(aFPdNe,6.0)
aadd(aFPdNe,0.8)
aadd(aFPdNe,1.6)
aadd(aFPdNe,1.6)
// Fatores de pondera‡Æo indice desmama das ra‡as Angus/Brangus
aadd(aFPdAb,5.0)
aadd(aFPdAb,1.0)
aadd(aFPdAb,2.3)
aadd(aFPdAb,1.7)

// Fatores de pondera‡Æo indice final das ra‡as Hereford/Braford
aadd(aFPfHb,2.5)
aadd(aFPfHb,0.4)
aadd(aFPfHb,0.8)
aadd(aFPfHb,0.8)
aadd(aFPfHb,2.5)
aadd(aFPfHb,0.4)
aadd(aFPfHb,0.8)
aadd(aFPfHb,0.8)
aadd(aFPfHb,1.0)
// Fatores de pondera‡Æo indice final da ra‡a Nelore
aadd(aFPfNe,2.3)
aadd(aFPfNe,0.4)
aadd(aFPfNe,0.8)
aadd(aFPfNe,0.8)
aadd(aFPfNe,2.3)
aadd(aFPfNe,0.4)
aadd(aFPfNe,0.8)
aadd(aFPfNe,0.8)
aadd(aFPfNe,1.4)
// Fatores de pondera‡Æo indice final das ra‡as Angus/Brangus
aadd(aFPfAb,2.25)
aadd(aFPfAb,0.45)
aadd(aFPfAb,1.05)
aadd(aFPfAb,0.75)
aadd(aFPfAb,2.25)
aadd(aFPfAb,0.45)
aadd(aFPfAb,1.05)
aadd(aFPfAb,0.75)
aadd(aFPfAb,1.0)

save screen

// Ambiente

set cursor off
set date british
set scoreboard off
set deleted on
set wrap on
set message to 24
set escape off
set confirm off
set exclusive on
set key K_F10 to fCalculadora()          // chama a calculadora
set key K_ALT_F8 to pIndexa()           // indexa os arquivos
set key K_F9 to sobr()           // chama o sobre
// set key asc("?") to comc()       // Chama o Como ...
// set key K_F7 to stat()           // Chama o Status
// set key K_SH_F9 to relo()        // Ativa o rel¢gio
set key K_SH_F10 to fCalculadora()       // Ativa a calculadora
// set key K_SH_F8 to scro()        // Ativa/Desativa SOM
 
// Novo Controle do Cursor

public bSavIns := setkey( K_INS, { || dbb4() } )   // dbb4() - verifica o estado do cursor
// setcursor( iif( ReadInsert(), SC_INSERT, SC_NORMAL ) )

normal=[n+/w,w+/n]
realce:=[gr+/w,w+/n]
inverso=[w+/b,n+/w]
inverso2=normal
piscando=[w+*/r]
senha=[n/w,n/n]
dbbr=[n+/w,w+/n,r/w,r/n]
calc=[w+/r]
cCorInv="w+/n"
cCorGet="n+/w,w+/n"
corbarra:="gr+/w"
alerta:="w+/r"
corbarrap:="w*+/g"
corbarraina:="w+/g"
cdesk:="n+/bg"
cCorMens:=normal

cDirTrab:="\conpec"
cDirTmp:="\conpec\tmp"
cDirRel:=""; cDirBol:=""; cDirAva:=""; cDirUsom:=""; cDirAvg:=""
cDirImp:=""; cDirExp:=""; cDirPad:=""; cDirRelPad:=""; cDirResPad:=""
cDirBackPad:=""; cDirCeip:=""; cDirCeipImp:=""; cDirCeipExp:=""
setcolor(inverso)

cls

fConfig(); config->SOM:=FALSE

// use config alias config new

public nLinhCalc:=config->LINHACALCU, nColuCalc:=config->COLUNACALC, nDeciCalc:=config->DECIMALCAL,;
       lScan:=FALSE

/*  pRede() // Acessa servidor   -  REVISAR AQUI ... */

if subs(upper(pSenha),1,3) = "/IX" .or. subs(upper(pAjud),1,3) = "/IX"

  if select("config")==0
     dbusearea(.t.,,"\conpec\config","config")
  endif
  dbusearea(.t.,,"\conpec\help")
  dbcreateindex("\conpec\help","modulo",{|| modulo})
  if !empty(pSenha)
     cEmp:=if(subs(pSenha,4,1)==":",upper(subs(pSenha,5,4))," ")
     cEmp:=space(4-len(rtrim(cEmp)))+rtrim(cEmp)
  elseif !empty(pAjuda).and.empty(pSenha)
     cEmp:=if(subs(pAjuda,4,1)==":",upper(subs(pAjuda,5,4))," ")
  endif

  pReindTot(cEmp,True) // Faz indexa‡„o geral

  restore screen
  
  quit
  
endif 

pAbreHelp()  // Base de ajuda

// Seguran‡a contra altera‡Æo manual no config

/*
if empty(config->CONFIG)
  cls
  qout([Acesso negado ...])
  qout([   Ligue (051)333-2483])
  return
endif
*/
/*
// Seguranca

cCodiLido:=[]

for z=1 to len(alltrim(config->MENSAGEM))
  cCodiLido+=chr(asc(substr(config->MENSAGEM,z,1))-159)
next  

if cCodiLido#"WGRXY"
  // hlock(cCodiLido) // Do config atual
endif
*/
// Detecta cor

if config->CORATUAL
  normal=[n+/w,w+/n]
  realce:=[gr+/w,w+/n]
  inverso=[w+/b,n+/w]
  inverso2=normal
  piscando=[w+*/r]
  senha=[n/w,w/n]
  dbbr=[n+/w,w+/n,r/w,r/n]
  calc=[w+/r]
  cCorInv="w+/n"
  cCorGet="n+/w,w+/n"
  corbarra:="gr+/w"
  alerta:="w+/r"
  corbarrap:="w*+/g"
  corbarraina:="w+/g"
  cdesk:="n+/bg"
  cCorMens:=normal
else
  normal=[n/w,w+/n]
  realce:=[gr+/w,w+/n]
  inverso=[w+/n,n+/w]
  inverso2=normal
  piscando=[N*/W]
  senha=[N/W,W/N]
  dbbr=[n+/w,w+/n,r/w,r/n]
  calc=[n/w]
  cCorInv="w/n"  
  cCorGet="n/w,w+/n"
  corbarra:=[w+/w]
  alerta:="w+/n"
  corbarrap:="n*+/w"
  corbarraina:="n/w"
  cdesk:="w/n"
  cCorMens:="n+/w,w+/n"
endif

* gr+ - amarelo
*   b - azul
*   w - branco
*  bg - ciano
*  rb - magenta
*  gr - marrom
*   n - preto
*   g - verde
*   r - vermelho

// Detecta impressora

lOfic:=if(upper(pSenha)=[OI].or.upper(pAjud)=[OI],TRUE,FALSE)

if config->IMPRESSORA==[EPSON     ]

   paisagem   := ""
   retrato    := ""
   comprimido := "[COMPRIMIDO]"  // chr(15)
   ImpNormal  := "[NORMAL]"  // chr(18)+chr(20)+chr(27)+chr(80)
   c12cpCome  := "[NORMAL]"  // chr(27)+chr(77)   // Inicia 12 cpi Normal
   expandido  := "[EXPANDIDO]"  // chr(14)
   reset      := chr(27)+chr(64)
   cSetPc850  := ""
   papel_def  := ""
   papel_car  := ""
   papel_ofi  := ""
   papel_a4   := ""
   salto_on   := ""
   salto_off  := ""
   formato    := ""
   nlinret    := 60
   nlinpai    := 60
  cDoubStri   := "[NEGRITO]"  // chr(27)+chr(71)          // Inicia Double Strike
  cDoubStrf   := "[CANCELANEGRITO]"  // chr(27)+chr(72)          // Finaliza Double Strike
  cInicSubl   := chr(27)+chr(45)+"1"      // Inicia Sublinhado
  cFinaSubl   := chr(27)+chr(45)+"0"      // Finaliza Sublinhado
  cNegritoi   := "[NEGRITO]"  // chr(27)+chr(71)          // Inicia Negrito
  cNegritof   := "[CANCELANEGRITO]"  // chr(27)+chr(72)          // Finaliza Negrito

elseif config->IMPRESSORA==[LASER     ]

   paisagem   := chr(027)+chr(038)+chr(108)+chr(049)+chr(079)
   retrato    := chr(027)+chr(038)+chr(108)+chr(048)+chr(079)
   comprimido := "[COMPRIMIDO]"  // chr(027)+chr(040)+chr(115)+"20"+chr(072)
   ImpNormal  := "[NORMAL]"  // chr(027)+chr(040)+chr(115)+"10"+chr(072)
   c12cpCome  := "[NORMAL]"  // chr(027)+chr(038)+chr(107)+chr(052)+chr(083)
   expandido  := "[EXPANDIDO]"  // chr(027)+chr(040)+chr(115)+"5"+chr(072)
   reset      := chr(027)+chr(069)
   cSetPc850  := chr(027)+chr(040)+chr(049)+chr(050)+chr(085)
   papel_def  := chr(027)+chr(038)+chr(108)+chr(048)+chr(065)
   papel_car  := chr(027)+chr(038)+chr(108)+chr(050)+chr(065)
   papel_ofi  := chr(027)+chr(038)+chr(108)+chr(051)+chr(065)
   papel_a4   := chr(027)+chr(038)+chr(108)+chr(050)+chr(054)+chr(065)
   salto_on   := chr(027)+chr(038)+chr(108)+chr(049)+chr(076)
   salto_off  := chr(027)+chr(038)+chr(108)+chr(048)+chr(076)
   formato    := chr(027)+chr(040)+chr(115)+chr(051)+chr(084)
   nlinret    := 60
   nlinpai    := 45
  cDoubStri   := "[NEGRITO]"  // chr(027)+chr(040)+chr(115)+chr(052)+chr(066) // Inicia Double Strike
  cDoubStrf   := "[CANCELANEGRITO]"  // chr(027)+chr(040)+chr(115)+chr(048)+chr(066) // Finaliza Double Strike
  cInicSubl   := chr(27)+chr(38)+chr(100)+chr(048)+chr(068)   // Inicia Sublinhado
  cFinaSubl   := chr(27)+chr(38)+chr(100)+chr(064)            // Finaliza Sublinhado
  cNegritoi   := "[NEGRITO]"  // chr(027)+chr(040)+chr(115)+chr(055)+chr(066) // Inicia Negrito
  cNegritof   := "[CANCELANEGRITO]"  // chr(027)+chr(040)+chr(115)+chr(048)+chr(066) // Finaliza Negrito

elseif config->IMPRESSORA==[TINTA     ] // copiar convencao de variaveis ...

   paisagem   := chr(027)+chr(038)+chr(108)+chr(049)+chr(079)
   retrato    := chr(027)+chr(038)+chr(108)+chr(048)+chr(079)
   comprimido := "[COMPRIMIDO]"  // chr(027)+chr(040)+chr(115)+"20"+chr(072)
   ImpNormal  := "[NORMAL]"  // chr(027)+chr(040)+chr(115)+"10"+chr(072)
   c12cpCome  := "[NORMAL]"  // chr(027)+chr(038)+chr(107)+chr(052)+chr(083)
   expandido  := "[EXPANDIDO]"  // chr(027)+chr(040)+chr(115)+"5"+chr(072)
   reset      := chr(027)+chr(069)
   cSetPc850  := chr(027)+chr(040)+chr(049)+chr(050)+chr(085)
   papel_def  := chr(027)+chr(038)+chr(108)+chr(048)+chr(065)
   papel_car  := chr(027)+chr(038)+chr(108)+chr(050)+chr(065)
   papel_ofi  := chr(027)+chr(038)+chr(108)+chr(051)+chr(065)     
   papel_a4   := chr(027)+chr(038)+chr(108)+chr(050)+chr(054)+chr(065)
   salto_on   := chr(027)+chr(038)+chr(108)+chr(049)+chr(076)
   salto_off  := chr(027)+chr(038)+chr(108)+chr(048)+chr(076)
   formato    := chr(027)+chr(040)+chr(115)+chr(051)+chr(084)
   nlinret    := 60
   nlinpai    := 45
  cDoubStri   := "[NEGRITO]"  // chr(027)+chr(040)+chr(115)+chr(052)+chr(066) // Inicia Double Strike
  cDoubStrf   := "[CANCELANEGRITO]"  // chr(027)+chr(040)+chr(115)+chr(048)+chr(066) // Finaliza Double Strike
  cInicSubl   := chr(27)+chr(38)+chr(100)+chr(048)+chr(068)   // Inicia Sublinhado
  cFinaSubl   := chr(27)+chr(38)+chr(100)+chr(064)            // Finaliza Sublinhado
  cNegritoi   := "[NEGRITO]"  // chr(027)+chr(040)+chr(115)+chr(055)+chr(066) // Inicia Negrito
  cNegritof   := "[CANCELANEGRITO]"  // chr(027)+chr(040)+chr(115)+chr(048)+chr(066) // Finaliza Negrito

endif

// cSenhLida:=[]
// for z=1 to len(alltrim(config->CONFIG))
//   cSenhLida+=chr(asc(substr(config->CONFIG,z,1))-159)
// next  
/*
if pcount()=1
  cSenh=upper(pSenha)
  if cSenh=cSenhLida
  elseif pSenha=[/?]
    pSenh()
    keyboard chr(4)+space(100)+chr(4)+space(100)+chr(4)+space(100)+chr(24)+space(100)+chr(24)+space(100)+chr(24)+space(100)+chr(13)
  else
    pSenh()
  endif
elseif pcount()=2
  cSenh=upper(pSenha)
  if cSenh=cSenhLida.and.pAjud=[/?]
    keyboard chr(4)+space(100)+chr(4)+space(100)+chr(4)+space(100)+chr(24)+space(100)+chr(24)+space(100)+chr(24)+space(100)+chr(13)
  elseif cSenh#cSenhLida.and.pAjud=[/?]
    pSenh()
    keyboard chr(4)+space(100)+chr(4)+space(100)+chr(4)+space(100)+chr(24)+space(100)+chr(24)+space(100)+chr(24)+space(100)+chr(13)
  elseif cSenh#cSenhLida.and.pAjud#[/?]
    pSenh()
  endif
else
  pSenh()
endif  
*/

nColuAtua := 1

pCfg()

nAltBases:=0; lBackup:=FALSE; lMensBack:=FALSE; lAlterado:=FALSE

aDire:=directory("\conpec\*.*","D")
if ascan(aDire,{|aVal| aVal[1]=="TOUROS"})==0
   !md \conpec\touros
endif

aStrBase:={"ANG_BRAN","BLONDE","CHA_CANC","DEV_BRAV","HER_BRAF","NELORE",;
           "SHORTHOR","STA_GERT","OUTROS","GERAL"}

if !file("\conpec\touros\touros.dbf")
   // Cria arquivo de touros caso ela ainda nÆo exista
   dbcreate( "\conpec\touros\touros", aTouros)
   dbusearea(.t.,, "\conpec\touros\touros", "tmp")
   tmp->(dbcriaindice("\conpec\touros\tou1", "fLtrim(MESTRE)", "EMPTY(AC).OR.SUBS(AC,1,1)='O'"))
   tmp->(dbcreateindex("\conpec\touros\tou2", "I_ANI", {|| I_ANI}))
   tmp->(dbcreateindex("\conpec\touros\tou3", "I_APE", {|| I_APE}))
   tmp->(dbcreateindex("\conpec\touros\tou4", "I_MAE_N+I_MAE_A+I_MAE_F", {|| I_MAE_N+I_MAE_A+I_MAE_F}))
   tmp->(dbcreateindex("\conpec\touros\tou5", "I_PAI", {|| I_PAI}))
   tmp->(dbcreateindex("\conpec\touros\tou6", "MESTRE", {|| MESTRE}))
   tmp->(dbcreateindex("\conpec\touros\tou7", "I_REG", {|| I_REG}))
   tmp->(dbcreateindex("\conpec\touros\tou8", "I_DIG", {|| I_DIG}))
   tmp->(dbcriaindice("\conpec\touros\tou14", "MESTRE", "EMPTY(AC).OR.SUBS(AC,1,1)='O'"))
   tmp->(dbclosearea())
endif

if select("tou")#0; tou->(dbclosearea()); endif
dbusearea(.t.,,"\conpec\touros\touros","tou")
tou->(fVerBases("\conpec\touros\touros","aTouros","   "))

aDireTou:=directory("\conpec\touros\*.*","D")
for x=1 to len(aStrBase)
   if aStrBase[x]#"GERAL"
      if ascan(aDireTou,{|aVal| aVal[1]==aStrBase[x]})==0
         cCriaDirt:="\conpec\touros\"+aStrBase[x]
         !md &cCriaDirt.
      endif
      cDirTou:="\conpec\touros\"+aStrBase[x]+"\"
      if !file(cDirTou+"touros.dbf")
         dbcreate(cDirTou+"touros", aTouros)
         dbusearea(.t.,,cDirTou+"touros", "tmp")
         tmp->(dbcriaindice(cDirTou+"tou1","fLtrim(MESTRE)", "EMPTY(AC).OR.SUBS(AC,1,1)='O'"))
         tmp->(dbcreateindex(cDirTou+"tou2","I_ANI", {|| I_ANI}))
         tmp->(dbcreateindex(cDirTou+"tou3","I_APE", {|| I_APE}))
         tmp->(dbcreateindex(cDirTou+"tou4","I_MAE_N+I_MAE_A+I_MAE_F", {|| I_MAE_N+I_MAE_A+I_MAE_F}))
         tmp->(dbcreateindex(cDirTou+"tou5","I_PAI", {|| I_PAI}))
         tmp->(dbcreateindex(cDirTou+"tou6","MESTRE", {|| MESTRE}))
         tmp->(dbcreateindex(cDirTou+"tou7","I_REG", {|| I_REG}))
         tmp->(dbcreateindex(cDirTou+"tou8","I_DIG", {|| I_DIG}))   
         tmp->(dbcriaindice(cDirTou+"tou14","MESTRE", "EMPTY(AC).OR.SUBS(AC,1,1)='O'"))
         tmp->(dbclosearea())
      endif
   endif
next

if !file("\conpec\touros\graus.dbf")
   // arquivo com os c¢digos de grau de sangue gerados pelos sistema
   dbcreate( "\conpec\touros\graus", aGrSangue)
   dbusearea(.t.,, "\conpec\touros\graus", "tmp")
   tmp->(dbcreateindex("\conpec\touros\gra1","CODGS", {|| CODGS},TRUE))
   tmp->(dbcreateindex("\conpec\touros\gra2","DESCRICAO", {|| DESCRICAO}))
   tmp->(dbcreateindex("\conpec\touros\gra3","R1+str(G1,6,4)+R2+str(G2,6,4)+R3+str(G3,6,4)+R4+str(G4,6,4)+R5+str(G5,6,4)+R6+str(G6,6,4)",;
                    {|| R1+str(G1,6,4)+R2+str(G2,6,4)+R3+str(G3,6,4)+R4+str(G4,6,4)+R5+str(G5,6,4)+R6+str(G6,6,4)}))
   tmp->(dbclosearea())
endif

aDireTou:=directory("\conpec\touros\*.*","D")
for x=1 to len(aStrBase)
   if aStrBase[x]#"GERAL"
      if ascan(aDireTou,{|aVal| aVal[1]==aStrBase[x]})==0
         cCriaDirt:="\conpec\touros\"+aStrBase[x]
         !md &cCriaDirt.
      endif  
      cDirTou:="\conpec\touros\"+aStrBase[x]+"\"
      if !file(cDirTou+"graus.dbf")
         dbcreate(cDirTou+"graus", aGrSangue)
         dbusearea(.t.,,cDirTou+"graus", "tmp")
         tmp->(dbcreateindex(cDirTou+"gra1","CODGS",{|| CODGS},TRUE))   
         tmp->(dbcreateindex(cDirTou+"gra2","DESCRICAO",{|| DESCRICAO}))
         tmp->(dbcreateindex(cDirTou+"gra3","R1+str(G1,6,4)+R2+str(G2,6,4)+R3+str(G3,6,4)+R4+str(G4,6,4)+R5+str(G5,6,4)+R6+str(G6,6,4)",;
                    {|| R1+str(G1,6,4)+R2+str(G2,6,4)+R3+str(G3,6,4)+R4+str(G4,6,4)+R5+str(G5,6,4)+R6+str(G6,6,4)}))
         tmp->(dbclosearea())
      endif
   endif
next

if select("graus")#0; grau->(dbclosearea()); endif
dbusearea(.t.,,"\conpec\touros\graus","graus")
graus->(fVerBases("\conpec\touros\graus","aGrSangue","   "))

if !file("\conpec\usuario.dbf")
   dbcreate("\conpec\usuario", aUsuar)
endif

keyboard ""

if select("usuario")#0; usuario->(dbclosearea()); endif
dbusearea(.t.,,"\conpec\usuario","usuario")
usuario->(fVerBases("\conpec\usuario","aUsuar","   "))

if select("rac")#0
   rac->(dbclosearea())
endi
dbusearea(.t.,, "racas" ,"rac")
if !file("ntx_rac1")
   rac->( dbcreateindex("ntx_rac1", "DESCRICAO", {|| DESCRICAO}))
endif
if !file("ntx_rac2")
   rac->(dbcreateindex("ntx_rac2", "CODIGO", {|| CODIGO}))
endif
rac->(dbclearindex())
rac->(dbsetindex("ntx_rac1"))
rac->(dbsetindex("ntx_rac2"))

// Gera o arquivo das impressoras para o PRWIN
// !\CONPEC\PRWIN SIL:LISTA
// cRunCmd:="cmd /c START /max PRWIN SIL:LISTA"
// lValor:=SWPRUNCMD(cRunCmd,0,"","")
cFazenda:="    "

dDataInf:=fDataAtual(dDataInf)

while TRUE

    keyboard chr( K_ENTER ) + chr( K_DOWN ) + chr( K_ENTER )
    pConPec2(nColuAtua, FALSE)
    // keyboard chr(K_DOWN)
    // nColuAtua := 1
enddo

return NIL

static procedure dbb4()

// dbb4.prg
// instoggle( )
// uso da dbbr( )
// dbb4()

if readinsert()
   readinsert( FALSE )
   setcursor( SC_NORMAL )
else
   readinsert( TRUE )
   setcursor( SC_INSERT )
endif
return

// proc ErrorSys()
//     ErrorBlock({|e| DefError(e)})
// return
Obrigado pela ajuda.

Simoreira
MarceloHenrique
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 06 Jul 2004 09:59
Localização: São Paulo - SP

Re: Erro: "Unsolved external _HB_FUN_SWPRUNCMD"

Mensagem por MarceloHenrique »

Boa tarde Simoreira,

Tente colocar antes da function Main():

REQUEST HB_GT_WIN

Abraços,

Marcelo Henrique
simoreira
Usuário Nível 1
Usuário Nível 1
Mensagens: 40
Registrado em: 20 Ago 2004 16:21

Re: Erro: "Unsolved external _HB_FUN_SWPRUNCMD"

Mensagem por simoreira »

Olá, Marcelo Henrique.

Sua dica abaixo não funcionou.

Obrigado.

Simoreira
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: Erro: "Unsolved external _HB_FUN_SWPRUNCMD"

Mensagem por Itamar M. Lins Jr. »

Ola!
Agora pode testar com o harbour do SVN muitas funções do blinker foram adicionadas.
Se não usa SVN irei colocar para download no 4shared.

Saudações,
Itamar M. Lins Jr.

Código: Selecionar todos

/*
 * $Id: blinker.prg 14243 2010-03-26 21:02:49Z vszakats $
 */

/*
 * Harbour Project source code:
 * Blinker compatibility functions.
 *
 * Copyright 2010 Viktor Szakats (harbour.01 syenar.hu)
 * www - http://www.harbour-project.org
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this software; see the file COPYING.  If not, write to
 * the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
 *
 * As a special exception, the Harbour Project gives permission for
 * additional uses of the text contained in its release of Harbour.
 *
 * The exception is that, if you link the Harbour libraries with other
 * files to produce an executable, this does not by itself cause the
 * resulting executable to be covered by the GNU General Public License.
 * Your use of that executable is in no way restricted on account of
 * linking the Harbour library code into it.
 *
 * This exception does not however invalidate any other reasons why
 * the executable file might be covered by the GNU General Public License.
 *
 * This exception applies only to the code released by the Harbour
 * Project under the name Harbour.  If you copy code from other
 * Harbour Project or Free Software Foundation releases into a copy of
 * Harbour, as the General Public License permits, the exception does
 * not apply to the code that you add in this way.  To avoid misleading
 * anyone as to the status of such modified files, you must delete
 * this exception notice from them.
 *
 * If you write modifications of your own for Harbour, it is your choice
 * whether to permit this exception to apply to your modifications.
 * If you do not wish that, delete this exception notice.
 *
 */

#include "common.ch"

#include "hbhrb.ch"
#include "hbmemory.ch"

/* BLIMGRSTS() parameters */
#define BliCacheLoc         1  /* Get location of real mode overlay cache (EMS/XMS) */
#define BliCacheSize        2  /* Get size of overlay cache */
#define BliExtMemAvail      3  /* Get bytes extended memory available to the extender */
#define BliHostMode         4  /* Get DOS extender host mode (DPMI/VCPI/XMS) */
#define BliMachineMode      5  /* Get current machine mode (real, protected) */
#define BliOverlayLoc       6  /* Get location of overlay area */
#define BliOverlaySize      7  /* Get size of overlay area */
#define BliRealMemAvail     8  /* Get bytes real memory available to the extender */
#define BliVirMemAvail      9  /* Get bytes virtual memory available to the extender */

/* BLIMGRSTS() BliCacheLoc values */
#define BliCacheNone        0  /* No overlay cache */
#define BliCacheEMS         1  /* Overlay cache is in EMS */
#define BliCacheXMS         2  /* Overlay cache is in XMS */

/* BLIMGRSTS() BliHostMode values */
#define BliHostNone         0
#define BliHostDPMI         1
#define BliHostVCPI         2
#define BliHostXMS          3

/* BLIMGRSTS() BliMachineMode values */
#define BliModeReal         0
#define BliMode286Prot      1

STATIC s_cSerialNum := ""
STATIC s_cDemoDate := ""
STATIC s_nDemoMinutes := 0
STATIC s_nError := 0
STATIC s_cErrorParam := ""
STATIC s_lLibOverrides := .F.

THREAD STATIC t_nErrorLevel := 0
THREAD STATIC t_nErrorMaj := 0
THREAD STATIC t_nErrorMin := 0

PROCEDURE HB_BLIVERNUM( cString )
   IF ISCHARACTER( cString )
      s_cSerialNum := cString
   ENDIF
   RETURN

PROCEDURE HB_BLIDEMDTE( dDate )
   IF ISDATE( dDate )
      s_cDemoDate := DToS( dDate )
   ENDIF
   RETURN

PROCEDURE HB_BLIDEMMIN( nValue )
   IF ISNUMBER( nValue )
      s_nDemoMinutes := nValue
   ENDIF
   RETURN

FUNCTION BLIDBGHAN( nValue )
   STATIC s_nDebugHandle := 1
   LOCAL nOldValue := s_nDebugHandle
   IF ISNUMBER( nValue )
      s_nDebugHandle := nValue
   ENDIF
   RETURN nOldValue

FUNCTION BLIDEMDTE()
   RETURN s_cDemoDate

FUNCTION BLIDEMDTEBAS()
   RETURN s_cDemoDate

FUNCTION BLIDEMMIN( nValue )
   LOCAL nOldValue := s_nDemoMinutes
   IF ISNUMBER( nValue )
      s_nDemoMinutes := nValue
   ENDIF
   RETURN nOldValue

PROCEDURE BLIDISFRG( fhnd )
   HB_SYMBOL_UNUSED( fhnd )
   RETURN

FUNCTION BLIERRNUM()
   RETURN s_nError

FUNCTION BLIERRPRM()
   RETURN s_cErrorParam

FUNCTION BLIERRPRMBAS()
   RETURN s_cErrorParam

/* INCOMPATIBLE: Will return pointer instead of numeric. */
FUNCTION BLILIBLIB( cLib )
   RETURN iif( s_lLibOverrides, hb_hrbLoad( HB_HRB_BIND_OVERLOAD, cLib ), hb_hrbLoad( cLib ) )

/* INCOMPATIBLE: Will return array instead of numeric. */
FUNCTION BLIFUNHAN( pLib, cFunction )
   RETURN hb_hrbGetFunSym( pLib, cFunction )

FUNCTION BLIFUNCAL( ... )
   LOCAL aParams := hb_AParams()
   LOCAL pFunction
   IF Len( aParams ) > 0
      pFunction := ATail( aParams )
      ASize( aParams, Len( aParams ) - 1 )
      RETURN hb_hrbDo( pFunction, hb_arrayToParams( aParams ) )
   ENDIF
   RETURN NIL

PROCEDURE BLILIBFRE( pLib )
   hb_hrbUnLoad( pLib )
   RETURN

PROCEDURE BLILIBOVR( lValue )
   IF ISLOGICAL( lValue )
      s_lLibOverrides := lValue
   ENDIF
   RETURN

PROCEDURE BLILSTFRG( fhnd )
   HB_SYMBOL_UNUSED( fhnd )
   RETURN

FUNCTION BLIMEMAVL()
   RETURN Memory( HB_MEM_CHAR )

FUNCTION BLIMEMSIZ()
   RETURN Memory( HB_MEM_CHAR )

FUNCTION BLIMEMBLK( nBlockSize )
   HB_SYMBOL_UNUSED( nBlockSize )
   RETURN Memory( HB_MEM_CHAR )

FUNCTION BLIMEMPAK( nValue )
   STATIC s_nGCFrequency := 0
   LOCAL nOldValue := s_nDemoMinutes
   IF ISNUMBER( nValue )
      s_nGCFrequency := nValue
   ENDIF
   RETURN nOldValue

FUNCTION BLIMEMUSE()
   RETURN Memory( HB_MEM_USED )

PROCEDURE BLIOVLCLR()
   RETURN

FUNCTION BLIOVLOPS()
   RETURN Memory( HB_MEM_CHAR )

PROCEDURE BLIOVLRES()
   RETURN

FUNCTION BLIOVLSIZ()
   RETURN 0

PROCEDURE BLIOVLSUS( nValue )
   HB_SYMBOL_UNUSED( nValue )
   RETURN

FUNCTION BLIPTRDEC( nPointer, nValue )
   RETURN nPointer - nValue

FUNCTION BLIPTRINC( nPointer, nValue )
   RETURN nPointer + nValue

FUNCTION BLISERNUM()
   RETURN s_cSerialNum

FUNCTION BLISERNUMBAS()
   RETURN s_cSerialNum

FUNCTION BLISTRFRG( cString )
   HB_SYMBOL_UNUSED( cString )
   RETURN ""

FUNCTION BLIVERNUM()
   RETURN 700

FUNCTION BLICPUREL()
   RETURN hb_idleRelease()

FUNCTION BLIMGRSTS( nParam )
   SWITCH nParam
   CASE BliCacheLoc     ; RETURN BliCacheNone
   CASE BliCacheSize    ; RETURN 0
   CASE BliExtMemAvail  ; RETURN 0
   CASE BliHostMode     ; RETURN BliHostNone
   CASE BliMachineMode  ; RETURN BliMode286Prot
   CASE BliOverlayLoc   ; RETURN 0
   CASE BliOverlaySize  ; RETURN Memory( HB_MEM_CHAR )
   CASE BliRealMemAvail ; RETURN Memory( HB_MEM_CHAR )
   CASE BliVirMemAvail  ; RETURN 0
   ENDSWITCH
   RETURN 0

FUNCTION SWPADDENV( nBytes )
   HB_SYMBOL_UNUSED( nBytes )
   RETURN 32768

FUNCTION SWPADDSTR( cPID, cString )
   HB_SYMBOL_UNUSED( cPID )
   HB_SYMBOL_UNUSED( cString )
   RETURN 1

FUNCTION SWPADDSTRBAS( cPID, cString )
   HB_SYMBOL_UNUSED( cPID )
   HB_SYMBOL_UNUSED( cString )
   RETURN 1

FUNCTION SWPCURDIR( lValue )
   HB_SYMBOL_UNUSED( lValue )
   RETURN .T.

FUNCTION SWPDISMSG( lValue )
   HB_SYMBOL_UNUSED( lValue )
   RETURN .F.

FUNCTION SWPEMS320( lValue )
   HB_SYMBOL_UNUSED( lValue )
   RETURN .F.

FUNCTION SWPERRLEV()
   RETURN t_nErrorLevel

FUNCTION SWPERRMAJ()
   RETURN t_nErrorMaj

FUNCTION SWPERRMIN()
   RETURN t_nErrorMin

FUNCTION SWPFREEMS( nLimitKB )
   HB_SYMBOL_UNUSED( nLimitKB )
   RETURN 0

FUNCTION SWPUSEEMS( lValue )
   HB_SYMBOL_UNUSED( lValue )
   RETURN .F.

FUNCTION SWPFREXMS( nLimitKB )
   HB_SYMBOL_UNUSED( nLimitKB )
   RETURN 0

FUNCTION SWPUSEXMS( lValue )
   HB_SYMBOL_UNUSED( lValue )
   RETURN .F.

FUNCTION SWPUSEUMB( lValue )
   HB_SYMBOL_UNUSED( lValue )
   RETURN .F.

FUNCTION SWPGETKEY( lValue )
   HB_SYMBOL_UNUSED( lValue )
   RETURN .F.

FUNCTION SWPGETPID( cIDString )
   HB_SYMBOL_UNUSED( cIDString )
   RETURN .F.

FUNCTION SWPVIDMDE( lValue )
   HB_SYMBOL_UNUSED( lValue )
   RETURN .F.

FUNCTION SWPGETSTR()
   RETURN ""

FUNCTION SWPKEYBRD( cKeyString )
   HB_SYMBOL_UNUSED( cKeyString )
   RETURN 0

FUNCTION SWPKEYBRDBAS( cKeyString )
   HB_SYMBOL_UNUSED( cKeyString )
   RETURN 0

FUNCTION SWPKEYCLR( nValue )
   HB_SYMBOL_UNUSED( nValue )
   RETURN 0

FUNCTION SWPNOBOOT( lValue )
   HB_SYMBOL_UNUSED( lValue )
   RETURN .F.

FUNCTION SWPRUNCMD( cCommand, nMem, cRunPath, cTempPath )
   LOCAL cShell

   HB_SYMBOL_UNUSED( nMem )
   HB_SYMBOL_UNUSED( cRunPath )
   HB_SYMBOL_UNUSED( cTempPath )

   #if defined( __PLATFORM__UNIX )
      cShell := hb_GetEnv( "SHELL" )
   #else
      cShell := hb_GetEnv( "COMSPEC" )
   #endif

   IF ! Empty( cShell )
      #if defined( __PLATFORM__WINDOWS ) .OR. defined( __PLATFORM__DOS )
         cCommand := cShell + " /c " + cCommand
      #else
         cCommand := cShell + " " + cCommand
      #endif
   ENDIF

   t_nErrorLevel := hb_run( cCommand )

   RETURN .T.

FUNCTION SWPSETENV( cString )
   LOCAL cPair
   LOCAL tmp

   FOR EACH cPair IN hb_ATokens( cString, Chr( 255 ) )
      IF ! Empty( cPair )
         tmp := At( "=", cPair )
         IF tmp > 0
            hb_SetEnv( Left( cPair, tmp - 1 ), SubStr( cPair, tmp + 1 ) )
         ENDIF
      ENDIF
   NEXT

   RETURN .T.

FUNCTION SWPSETPID( cIDString )
   HB_SYMBOL_UNUSED( cIDString )
   RETURN .T.

FUNCTION SWPSETPIDBAS( cIDString )
   HB_SYMBOL_UNUSED( cIDString )
   RETURN .T.

FUNCTION SWPSETSTR( cString )
   HB_SYMBOL_UNUSED( cString )
   RETURN .T.

FUNCTION SWPSETSTRBAS( cString )
   HB_SYMBOL_UNUSED( cString )
   RETURN .T.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Erro: "Unsolved external _HB_FUN_SWPRUNCMD"

Mensagem por sygecom »

Olá Simoneira,
o xDev não aceita .BAT ? se sim, faça un script para usar o HBMAKE.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder