Neste site voce vai encontrar tutoriais de software livre e tambem alguns para Windows, sistema de controles de frequência e usuários desenvolvidos em PHP e MySQL, diversão, muita coisa sobre pescarias com albuns de fotos e também as viagens que pude registrar até agora.
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <time.h>
#include "funcoes.h"
#include "natuser.h"
#define BRANCO 32
char valorcompactado[10];
int CompactaCOMP3(char *);
long DiferencaDatas(char *, char *);
/*----------------------------------------------------------------------*
* *
* Modulo .................. PB19070A *
* Autor ................... Lercio Teotonio Gontijo *
* Data .................... Julho de 1994 *
* Local ................... PRODABEL - BELO HORIZONTE *
* Funcao .................. DIFERENCA ENTRE DATAS *
* *
*----------------------------------------------------------------------*/
long PB19070A (WORD nparm, BYTE **parmptr, FINFO *parmdec)
{
long result;
char data1[7], data2[7], str[4], string[9];
data1[6] = data2[6] = valorcompactado[9] = '/0';
strcpy(string,"999999");
CompactaCOMP3(string);
memmove((char *)parmptr[2],&valorcompactado,4);
/* Teste se recebeu somente 3 parametros */
if (nparm != 3)
return 1;
/* Recupera as datas (data1 e data2) */
memmove ((char *) &data1, (char *) parmptr[0], 6);
memmove ((char *) &data2, (char *) parmptr[1], 6);
if ((!ConsisteData(data1,'G')) || (!ConsisteData(data2,'G')))
return 1;
result = DiferencaDatas(data1,data2);
if (result > 999999)
return 1;
sprintf(string,"%+08ld",result);
CompactaCOMP3(string);
memmove((char *) parmptr[2], (char *) &valorcompactado, 4);
return 0;
}
/*
************* fim do módulo principal ***************
*/
long DiferencaDatas(char *data1, char *data2)
{
char *ptr, str[5], str1[7], str2[7];
int anos1, anos2, dias1, dias2;
long result;
strcpy(str1,data1);
GregorianaJuliana((char *)&str1);
data1 = str1;
strcpy(str2,data2);
GregorianaJuliana((char *)&str2);
data2 = str2;
ptr = data1;
strncpy(str,data1,3);
anos1 = atoi(str);
ptr += 3;
dias1 = atoi(ptr);
ptr = data2;
strncpy(str,data2,3);
anos2 = atoi(str);
ptr += 3;
dias2 = atoi(ptr);
result = (anos1 * 365 + dias1) - (anos2 * 365 + dias2);
if (anos1 > anos2)
{
for(;anos1 > anos2;anos2++)
if (anos2 % 4 == 0)
result++;
}
else
for(;anos1 < anos2;anos1++)
if (anos1 % 4 == 0)
result--;
return(result);
}
CompactaCOMP3(char *num)
{
char *pointer, string[8];
int i, k;
if (strlen(num) > 8)
return 0;
memset(string,0,8);
k = 7;
i = strlen(num) - 1;
string[k] = 12;
if (num[0] == '-')
string[k]++;
string[k] += 16 * (num[i] - 48);
for(;i>1;i-=2,k--)
{
string[k-1] = num[i-1] - 48;
if (i-1 > 0)
string[k-1] += 16 * (num[i-2] - 48);
}
k = (strlen(num) - 1) / 2 + 1;
if (k < 4)
k = 4;
pointer = string;
pointer += 8 - k;
memmove(valorcompactado,pointer,k);
return 1;
}