From: Joey Schulze Date: Sat, 17 Nov 2001 16:05:47 +0000 (+0000) Subject: Added reverse support for upcoming European currency ``Euro''. X-Git-Url: https://git.infodrom.org/?p=infodrom%2Fdtaus;a=commitdiff_plain;h=1d196a9b1cd3f25e79699de65bcf4f47ec644563 Added reverse support for upcoming European currency ``Euro''. There's a define DEFAULT_EURO which can be turned on by third parties if they would like to default to Euro instead of DM. Some time in 2002 I will probably remove that define, remove any mentioning of DM and let the program default to Euro. Also cleaned up the code a little bit. Changed some static references to real references for some currency fields. --- diff --git a/dtaus.c b/dtaus.c index 70785f6..7376627 100644 --- a/dtaus.c +++ b/dtaus.c @@ -508,12 +508,12 @@ void dtaus_prepareA (char *buf) for (i=70;i<70+10; i++) buf[i] = '0'; /* A10 */ for (i=80;i<80+48; i++) buf[i] = ' '; /* A11 */ #ifdef DEFAULT_EURO - buf[127] = '1'; /* A12 (Currency) */ + buf[recA[A_EURO].pos] = '1'; /* A12 (Currency) */ #else if (use_euro) - buf[127] = '1'; /* A12 (Currency) */ + buf[recA[A_EURO].pos] = '1'; /* A12 (Currency) */ else - buf[127] = ' '; /* A12 (Currency) */ + buf[recA[A_EURO].pos] = ' '; /* A12 (Currency) */ #endif } @@ -546,17 +546,17 @@ void dtaus_prepareC (char *buf, int normaltext, int maxtext) for (i=31;i<31+13; i++) buf[i] = '0'; /* C6 */ buf[49] = ' '; /* C8 */ for (i=50;i<50+11; i++) buf[i] = '0'; /* C9 (Betrag) */ - for (i=79;i<79+11; i++) buf[i] = '0'; /* C12 (Euro) */ + for (i=79;i<79+11; i++) buf[i] = '0'; /* C12 (Betrag Euro) */ for (i=90;i<90+3; i++) buf[i] = ' '; /* C13 */ for (i=93;i<90+27; i++) buf[i] = ' '; /* C14a (Kunde) */ for (i=120;i<120+8; i++) buf[i] = ' '; /* C14b */ #ifdef DEFAULT_EURO - buf[182] = '1'; /* C17a (Currency) */ + buf[recC[C_EURO].pos] = '1'; /* C17a (Currency) */ #else if (use_euro) - buf[182] = '1'; /* C17a (Currency) */ + buf[recC[C_EURO].pos] = '1'; /* C17a (Currency) */ else - buf[182] = ' '; /* C17a (Currency) */ + buf[recC[C_EURO].pos] = ' '; /* C17a (Currency) */ #endif for (i=183;i<183+2; i++) buf[i] = ' '; /* C17b */ for (i=187;i<187+(29*2); i++) buf[i] = ' '; /* C19-C22 (misc text) */ @@ -812,19 +812,20 @@ void dtaus2control (char *cdtaus, char *ccontrol) fprintf(fcontrol, "BEGIN {\n"); bufp = buf; - for (index=A_TRANS; index < A_DATE; index++) { +#ifndef DEFAULT_EURO + for (index=A_TRANS; index <= A_EURO; index++) { +#else + for (index=A_TRANS; index < A_EURO; index++) { +#endif bufp = buf + recA[index].pos; memcpy(tmp, bufp, recA[index].len); tmp[recA[index].len] = '\0'; printctln(fcontrol, recA[index].name, strip_zeros(strip_spaces(tmp))); } - index = A_DATE; bufp = buf + recA[index].pos; - memcpy(tmp, bufp, recA[index].len); tmp[recA[index].len] = '\0'; - printctln(fcontrol, recA[index].name, strip_spaces(tmp)); - - index = A_EURO; bufp = buf + recA[index].pos; - memcpy(tmp, bufp, recA[index].len); tmp[recA[index].len] = '\0'; - printctln(fcontrol, recA[index].name, strip_zeros(strip_spaces(tmp))); +#ifndef DEFAULT_EURO + if (tmp[recA[index].pos] == '1') + use_euro = 1; +#endif fprintf(fcontrol, "}\n\n"); } else { @@ -848,15 +849,27 @@ void dtaus2control (char *cdtaus, char *ccontrol) } else { fprintf(fcontrol, "{\n"); - for (index=C_NAME; index <= C_EURO; index++) { + for (index=C_NAME; index < C_EURO; index++) { +#ifndef DEFAULT_EURO + if (use_euro && index == C_VAL) + index = C_EUR; +#endif bufp = buf + recC[index].pos; memcpy(tmp, bufp, recC[index].len); tmp[recC[index].len] = '\0'; +#ifndef DEFAULT_EURO + if (index == C_VAL || index == C_EUR) +#else if (index == C_VAL) +#endif printctln(fcontrol, recC[index].name, strip_zeros(string2real(tmp))); else if (index == C_TRANS) printctln(fcontrol, recC[index].name, strip_zeros(string2trans(tmp))); else printctln(fcontrol, recC[index].name, strip_zeros(strip_spaces(tmp))); +#ifndef DEFAULT_EURO + if (use_euro && index == C_EUR) + index = C_VAL; +#endif } for (index=C_TEXT; index <= C_EXT; index++) { @@ -913,12 +926,24 @@ void dtaus2control (char *cdtaus, char *ccontrol) fprintf(fcontrol, "\nEND {\n"); for (index=E_COUNT; index <= E_BLZ; index++) { +#ifndef DEFAULT_EURO + if (use_euro && index == E_VAL) + index = E_EUR; +#endif bufp = buf + recE[index].pos; memcpy(tmp, bufp, recE[index].len); tmp[recE[index].len] = '\0'; +#ifndef DEFAULT_EURO + if (index == E_VAL || index == E_EUR) +#else if (index == E_VAL) +#endif printctln(fcontrol, recE[index].name, strip_zeros(string2real(tmp))); else printctln(fcontrol, recE[index].name, strip_zeros(tmp)); +#ifndef DEFAULT_EURO + if (use_euro && index == E_EUR) + index = E_VAL; +#endif } fprintf(fcontrol, "}\n");