1422 /* BASL2DBF konverterar svenska baslistan till DBF-format */ /* L„nka i LARGE MODEL med BULLET_L.LIB */ #include #include #include #include #include #include #include #include #include #include #include struct memorypack MP; struct initpack IP; struct exitpack EP; struct createdatapack CDP; struct createkeypack CKP; struct dosfilepack DFP; struct openpack OP; struct accesspack AP; struct statdatapack SDP; struct exitpack EP; struct blrectype { char tag[1]; char telnr[11]; char basnamn[21]; char prog[2]; char hastighet[13]; char sysop[17]; char nodnr[8]; char komment[3][58]; }; struct blrectype blrec; struct fielddesctype fieldlist1[9]; FILE* basdatf; char blDATname[] = "BASLISTA.DBF"; unsigned blDAThandle; char basdats[80]; #define TRUE 1 #define FALSE 0 int firsttime; int rez,level; main(int argc, char **argv) { int i; char *p; if(argc > 1) { if( ! (basdatf = fopen(argv[1],"rt"))){ printf("Couldn't find %s!\n",argv[1]); exit(1); } init(); make_dbf(); clear_fields(); i = 0; firsttime = TRUE; while(fgets(basdats,80,basdatf)) { if(strnicmp(&basdats[2],"- ",2) != 0) { if(! firsttime) { add_record(); clear_fields(); i = 0; } else firsttime = FALSE; strncpy(blrec.telnr,&basdats[0],11); strncpy(blrec.basnamn,&basdats[12],21); strncpy(blrec.prog,&basdats[34],2); strncpy(blrec.hastighet,&basdats[37],13); strncpy(blrec.sysop,&basdats[51],17); strncpy(blrec.nodnr,&basdats[69],8); if(blrec.nodnr[6] == 10) strncpy(&blrec.nodnr[6]," ",2); else if(blrec.nodnr[7] == 10) blrec.nodnr[7] = 32; } else { blrec.komment[i][0] = 0; strcpy(blrec.komment[i],basdats+13); strncpy(&blrec.komment[i][strlen(blrec.komment[i])-1]," ",2); i++; } } add_record(); fclose(basdatf); EP.func = EXITXB; rez = BULLET(&EP); } else { printf("BASL2DBF konverterar BASLISTA till Dbase DBF\n"); printf("usage: basl2dbf \n"); } } init() { level = 100; MP.func = MEMORYXB; rez = BULLET(&MP); if (MP.memory < 40000l) { rez = 8; error(); } level = 110; IP.func = INITXB; IP.jftmode = 0; if((rez = BULLET(&IP)) != 0) error(); } make_dbf() { FILE* dummy; if((dummy = fopen(blDATname,"rt"))) { fclose(dummy); unlink(blDATname); } strcpy(fieldlist1[0].fieldname,"TELNR"); strcpy(fieldlist1[0].fieldtype,"C"); fieldlist1[0].fieldlen = 11; fieldlist1[0].fielddc = 0; strcpy(fieldlist1[1].fieldname,"BASNAMN"); strcpy(fieldlist1[1].fieldtype,"C"); fieldlist1[1].fieldlen = 21; fieldlist1[1].fielddc = 0; strcpy(fieldlist1[2].fieldname,"PROG"); strcpy(fieldlist1[2].fieldtype,"C"); fieldlist1[2].fieldlen = 2; fieldlist1[2].fielddc = 0; strcpy(fieldlist1[3].fieldname,"HASTIGHET"); strcpy(fieldlist1[3].fieldtype,"C"); fieldlist1[3].fieldlen = 13; fieldlist1[3].fielddc = 0; strcpy(fieldlist1[4].fieldname,"SYSOP"); strcpy(fieldlist1[4].fieldtype,"C"); fieldlist1[4].fieldlen = 17; fieldlist1[4].fielddc = 0; strcpy(fieldlist1[5].fieldname,"NODNR"); strcpy(fieldlist1[5].fieldtype,"C"); fieldlist1[5].fieldlen = 8; fieldlist1[5].fielddc = 0; strcpy(fieldlist1[6].fieldname,"KOMMENT1"); strcpy(fieldlist1[6].fieldtype,"C"); fieldlist1[6].fieldlen = 58; fieldlist1[6].fielddc = 0; strcpy(fieldlist1[7].fieldname,"KOMMENT2"); strcpy(fieldlist1[7].fieldtype,"C"); fieldlist1[7].fieldlen = 58; fieldlist1[7].fielddc = 0; strcpy(fieldlist1[8].fieldname,"KOMMENT3"); strcpy(fieldlist1[8].fieldtype,"C"); fieldlist1[8].fieldlen = 58; fieldlist1[8].fielddc = 0; createdbf(blDATname,9,&fieldlist1); opendbf(blDATname,&blDAThandle); } createdbf(char far *fname,unsigned nofields,char far *fieldlist) { CDP.func = CREATEDXB; CDP.filenameptr = fname; CDP.nofields = nofields; CDP.fieldlistptr = fieldlist; CDP.fileid = 3; if((rez = BULLET(&CDP)) != 0) error(); } opendbf(char far *fname,unsigned *handle) { level = 1010; OP.func = OPENDXB; OP.filenameptr = fname; OP.asmode = READWRITE | DENYNONE; if((rez = BULLET(&OP)) != 0) error(); *handle = OP.handle; } add_record() { AP.func = ADDRECORDXB; AP.handle = blDAThandle; AP.recptr = &blrec; rez = BULLET(&AP); if(rez != 0) error(); } clear_fields() { memset(blrec.telnr,32,11); memset(blrec.basnamn,32,21); memset(blrec.prog,32,2); memset(blrec.hastighet,32,13); memset(blrec.sysop,32,17); memset(blrec.nodnr,32,8); memset(blrec.komment[0],32,58); memset(blrec.komment[1],32,58); memset(blrec.komment[2],32,58); } error() { printf("Error: %u at level %u while performing ",rez,level); switch (level) { case 100: printf("a memory request of 140K.\n"); break; default: printf("(See source)\n"); /* just check the source */ } exit(1); } . 0