home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / database / 8828 < prev    next >
Encoding:
Text File  |  1993-01-05  |  9.5 KB  |  506 lines

  1. Xref: sparky comp.databases:8828 comp.lang.c:19269
  2. Path: sparky!uunet!gatech!paladin.american.edu!howland.reston.ans.net!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!udecc.engr.udayton.edu!blackbird.afit.af.mil!dsacg3.dsac.dla.mil!dcsc.dla.mil!das1191
  3. From: das1191@dcsc.dla.mil (Charles M. Strickland)
  4. Newsgroups: comp.databases,comp.lang.c
  5. Subject: BUG TRYING TO CUSTOMIZE ENTER
  6. Message-ID: <1667@dcsc.dla.mil>
  7. Date: 5 Jan 93 19:40:08 GMT
  8. Sender: das1191@dcsc.dla.mil
  9. Followup-To: comp.databases
  10. Organization: Defense Construction Supply Center, Columbus
  11. Lines: 493
  12.  
  13. BELOW IS A PROGRAM TO CUSTOMIZE ENTER FOR UNIFY 4.0.
  14. THE FIELDS AT THE BOTTOM OF THE SCREEN ARE CALCULATED FROM SUBTRACTING
  15. VARIOUS DATES ENTERED FROM EACH OTHER.  THE CALCULACTIONS WORK FINE WHEN
  16. ADDING A NEW RECORD, BUT AS SOON AS YOU DO CONTROL-U TO SAVE THE
  17. RECORD TO THE DATABASE, THE NUMBERS CHANGE TO A 8 DIGIT NUMBER ON THE
  18. SCREEN AND THE NUMBER SAVED IN THE DATABASE IS A 3 DIGIT NUMBER.
  19. THE SCREEN FIELDS ARE DEFINED AS 3 NUMERIC
  20. AND DEFINED IN THE DATABASE AS 3 NUMBERIC. I KNOW IT IS HARD
  21. TO VISUALIZE WITHOUT SEEING IT HAPPEN, BUT CAN ANYONE TELL ME WHY THIS
  22. IS HAPPENING?  I KNOW IT IS A PROBLEM WITH DATA REPRESENTATION, BUT
  23. I DON'T KNOW HOW TO CORRECT THE PROBLEM.
  24. IF ANYONE CAN HELP ME WITH THIS BUG, I WOULD GREATLY APPRECIATE IT.
  25.  
  26. MY NAME IS CHARLES STRICKLAND         TELEPHONE (AV) 850-2701
  27.        DITSO-GCIS                 email address = das1191@dcsc.dla.mil
  28.        COLUMBUS, OHIO
  29.  
  30. #include "/app/accell/include/edits.h"
  31. #include "/app/accell/include/chookincl.h"
  32. #include "/usr/include/ctype.h"
  33. #include "/locapp/mipr/bin/itoa.c"
  34. $include "file.h"
  35. #include "mipree.h"
  36. #include <time.h>
  37. #include <stdio.h>
  38. #include "julian.c"
  39. #include "str_int.c"
  40. char vstatcd[] = {" "};
  41. /*int cksal();
  42. int ck_ar();
  43. int ed_date();
  44. int ed_d1();*/
  45. /*#include "/app/accell/include/edits.h"*/
  46. /*#include "/usr/lib/libtermcap.a"*/
  47. /*#include "ctype.h"*/
  48. int ed_date();
  49. int ed_ta();
  50. int curdate();
  51. int cksal1();
  52. int cksal11();
  53. int cksal2();
  54. int cksal3();
  55. int cksal4();
  56. int cksal5();
  57. int cksal();
  58. int cksalfir();
  59. int cksalall();
  60. int cksalallp();
  61. int ck_ars();
  62. int ck_ar();
  63. int blank1();
  64. int blank2();
  65. int blank3();
  66. int blank4();
  67. int blank5();
  68. int blank6();
  69. int blank7();
  70. int blank8();
  71. int blank9();
  72. int blank10();
  73.  
  74. SFTABLE edit1[] = {
  75. aa,0,0,blank1,
  76. ab,0,0,blank1,
  77. ac,0,0,blank1,
  78. ad,0,0,blank1,
  79. ae,0,0,blank1,
  80. af,0,0,blank1,
  81. ag,0,0,blank2,
  82. ah,0,0,blank1,
  83. ai,0,0,blank1,
  84. aj,0,0,blank1,
  85. b5,cksal1,0,ck_ar,
  86. a5,cksal1,0,ck_ar,
  87. d5,cksal1,0,ck_ar,
  88. b2,cksal,0,ck_ars,
  89. fincl,cksal2,0,blank3,
  90. c5,cksal3,0,blank5,
  91. accptdat,cksal4,0,blank4,
  92. cd,cksalfir,0,ed_date,
  93. tp,0,cksalallp,blank6,
  94. ta,0,ed_ta,0,
  95. tt,0,cksalall,blank8,
  96. ti,0,cksalall,blank9,
  97. tl,0,cksalall,blank10,
  98. -1,0,0,0};
  99.  
  100. SCRTABLE screentab[] = {
  101. "mipree",0,0,edit1,
  102. 0,0,0,0};
  103.  
  104.  
  105. /*  cksal is used to skip fields - not let user change contents */ 
  106. cksalall (sfld, buf)
  107. int sfld;
  108. char *buf;
  109. {
  110.      return (0);
  111. }
  112.  
  113. /*  subtract received date from accept date to get timely accept */ 
  114. ed_ta (sfld, buf, ier)
  115. int sfld, ier;
  116. char *buf;
  117. {
  118.   char xi[30];
  119.   char xii;
  120.   char xiii;
  121.   char xiiii;
  122.   double var;
  123.   char varx;
  124.   int conv;
  125.   gfield (accdate,&xii);
  126.   gfield (recdate,&xiii);
  127.   xiiii = xii - xiii;
  128.     outbuf (sfld,&xiiii);
  129.     pfield (timea,&xiiii);
  130.     return (0);
  131. }
  132.  
  133. /*  cksal is used to skip fields - not let user change contents */ 
  134. cksalallp (sfld, buf)
  135. int sfld;
  136. char *buf;
  137. {
  138.   short xii;
  139.   short xiii;
  140.   int xiiii;
  141.   double var;
  142.   char varx;
  143.   gfield(awddate,&xii);
  144.   gfield(findate,&xiii);
  145.   xiiii = xii - xiii;
  146.   pfield(timep,&xiiii);
  147.      return (0);
  148. }
  149.  
  150.  
  151. /*  cksal is used to skip fields - not let user change contents */ 
  152. cksalfir (sfld, buf)
  153. int sfld;
  154. char *buf;
  155. {
  156.      return (-3);
  157. }
  158.  
  159.  
  160.  
  161. /*  cksal is used to skip fields - not let user change contents */ 
  162. cksal (sfld, buf)
  163. int sfld;
  164. char *buf;
  165. {
  166.     char xisal[3];
  167.     gfield(statcd,&xisal);
  168.     if (xisal[0] == ' ')
  169.      return (-3);
  170.     /*else*/
  171.      return(0);
  172. }
  173.  
  174. /*  cksal is used to skip fields - not let user change contents */ 
  175. cksal1 (sfld, buf)
  176. int sfld;
  177. char *buf;
  178. {
  179.     short xi;
  180.     gfield(awddate,&xi);
  181.    if ((xi == -32768) && (scrmode == ADD))
  182.      return (-3);
  183.     /*else*/
  184.      return(0);
  185. }
  186.  
  187. cksal11 (sfld, buf)
  188. int sfld;
  189. char *buf;
  190. {
  191.     short xi;
  192.      return (-3);
  193. }
  194.  
  195. /*  cksal is used to skip fields - not let user change contents */ 
  196. cksal2 (sfld, buf)
  197. int sfld;
  198. char *buf;
  199. {
  200.     short xi;
  201.   gfield(initdate,&xi);
  202.    if (xi == -32768)
  203.      return (-3);
  204.     /*else*/
  205.      return(0);
  206. }
  207.  
  208. /*  cksal is used to skip fields - not let user change contents */ 
  209. cksal3 (sfld, buf)
  210. int sfld;
  211. char *buf;
  212. {
  213.     short xi;
  214.   gfield(accdate,&xi);
  215.    if (xi == -32768)
  216.      return (-3);
  217.     /*else*/
  218.      return(0);
  219. }
  220.  
  221. /*  cksal is used to skip fields - not let user change contents */ 
  222. cksal4 (sfld, buf)
  223. int sfld;
  224. char *buf;
  225. {
  226.     short xi;
  227.   gfield(recdate,&xi);
  228.    if (xi == -32768)
  229.      return (-3);
  230.     /*else*/
  231.      return(0);
  232. }
  233.  
  234. /* 
  235.    the blank1,2,3 rtns are used to prevent the user from not entering data.
  236.    the use in the work_ord screen is to ensure that something is input
  237.    for a work description and justification - at least the 1st line
  238. */
  239.  
  240. blank1 ( sfld, buf, ier)
  241. int sfld, ier;
  242. char *buf;
  243. {
  244.   char xi[30];
  245.   double var;
  246.   char varx;
  247.   if ((ier == -3) && (scrmode == ADD))
  248.      return (-1);
  249.      /*else */
  250.      return (0);
  251. }
  252.     /*  
  253.     ck_ar routine checks status code to see if it is an R. If it is, then
  254.     the status field MUST be filled in. If statcd = A, then status field can 
  255.     skipped.
  256.     */
  257.  
  258. ck_ar (sfld,buf,ier)
  259. int sfld,ier;
  260. char *buf;
  261. {
  262.    short xst;
  263.    gfield (awddate,&xst);
  264.    if (xst == -32768)
  265.       return (0);
  266.   if ((ier == -3) && (scrmode == ADD))
  267.    /*if (ier == -3)*/
  268.       return (-1);
  269.       /*else*/
  270.       return (0);
  271. }
  272.  
  273. ck_ars (sfld,buf,ier)
  274. int sfld,ier;
  275. char *buf;
  276. {
  277.     char xisal[3];
  278.    if ((ier == -3) && (scrmode == ADD))
  279.       return (-1);
  280.       /*else*/
  281.       return (0);
  282. }
  283.  
  284.  
  285.  
  286. blank2 ( sfld, buf, ier)
  287. int sfld, ier;
  288. char *buf;
  289. {
  290.   char xi[30];
  291.   char xiii[2];
  292.   short xii;
  293.   double var;
  294.   char varx;
  295.   if ((ier == -3) && (scrmode != ADD))
  296.      return (0);
  297.   if ((ier == -3) && (scrmode == ADD))
  298.      return (-1);
  299.   gfield(awddate,&xii);
  300.    if (xii != -32768 && buf[1] != 'F')
  301.    {
  302.   prtmsg(1,23,"SECOND POS OF FUND TYPE MUST BE 'F' (UPPER CASE) WHEN AWARD DATE PRESENT");
  303.   output(sfld);
  304.   return (-1);
  305.    }
  306.      /*else */
  307.      return (0);
  308. }
  309. blank5 ( sfld, buf, ier)
  310. int sfld, ier;
  311. char *buf;
  312. {
  313.   char xi[30];
  314.   char xic[8];
  315.   char xicc[8];
  316.   char xiccc[8];
  317.   short xii;
  318.   short xiii;
  319.   short xiiii;
  320.   double var;
  321.   char varx;
  322.   gfield(accdate,&xic);
  323.    if (strncmp(buf,xic,8) == 0) 
  324.   return (0);
  325.    if (strncmp(buf,xic,8) < 0) 
  326.    {
  327.   prtmsg(1,23,"AWARD DATE MUST BE GREATER THAN OR EQUAL TO ACCEPT DATE");
  328.   output(sfld);
  329.   return (-1);
  330.    }
  331.   return (0);
  332. }
  333.  
  334. blank4 ( sfld, buf, ier)
  335. int sfld, ier;
  336. char *buf;
  337. {
  338.   char xi[30];
  339.   char xic[8];
  340.   char xicc[8];
  341.   short xii;
  342.   short xiii;
  343.   int xiiii;
  344.   int xiiiii;
  345.   int xiiiiii;
  346.   double var;
  347.   char varx;
  348.   gfield(recdate,&xic);
  349.    if (strncmp(buf,&xic,8) < 0) 
  350.    {
  351.   prtmsg(1,23,"ACCEPT DATE MUST BE GREATER THAN OR EQUAL TO RECEIVED DATE");
  352.   output(sfld);
  353.   return (-1);
  354.    }
  355.   return (0);
  356. }
  357.  
  358.  
  359. blank3 ( sfld, buf, ier)
  360. int sfld, ier;
  361. char *buf;
  362. {
  363.   char xi[30];
  364.   char xic[8];
  365.   char xicc[8];
  366.   char xiccc[8];
  367.   short xii;
  368.   short xiii;
  369.   short xiiii;
  370.   double var;
  371.   char varx;
  372.   gfield(initdate,&xic);
  373.    if (strncmp(buf,xic,8) < 0) 
  374.    {
  375.   prtmsg(1,23,"FINAL CLOSE DATE MUST BE GREATER THAN OR EQUAL TO INITIAL CLOSE DATE");
  376.   output(sfld);
  377.   return (-1);
  378.    }
  379.   return (0);
  380. }
  381.  
  382.  
  383. /*  subtract final date from award date to get timely proc */ 
  384. blank6 ( sfld, buf, ier)
  385. int sfld, ier;
  386. char *buf;
  387. {
  388.   char xi[30];
  389.   short xii;
  390.   short xiii;
  391.   int xiiii;
  392.   double var;
  393.   char varx;
  394.   gfield(awddate,&xii);
  395.   gfield(findate,&xiii);
  396.   xiiii = xii - xiii;
  397.   outbuf(sfld,&xiiii);
  398.   return(0);
  399. }
  400.  
  401. /*  subtract received date from accept date to get timely accept */ 
  402. blank7 ( sfld, buf, ier)
  403. int sfld, ier;
  404. char *buf;
  405. {
  406.   char xi[30];
  407.   short xii;
  408.   short xiii;
  409.   int xiiii;
  410.   double var;
  411.   char varx;
  412.   int conv;
  413.   gfield(accdate,&xii);
  414.   gfield(recdate,&xiii);
  415.   xiiii = xii - xiii;
  416.   outbuf(sfld,&xiiii);
  417.   pfield(timea,&sfld);
  418.   return(0);
  419. }
  420.  
  421. /*  subtract accept date from award date to get timely alt */ 
  422. blank8 ( sfld, buf, ier)
  423. int sfld, ier;
  424. char *buf;
  425. {
  426.   char xi[30];
  427.   short xii;
  428.   short xiii;
  429.   int xiiii;
  430.   double var;
  431.   char varx;
  432.   gfield(awddate,&xii);
  433.   gfield(accdate,&xiii);
  434.   xiiii = xii - xiii;
  435.   outbuf(sfld,&xiiii);
  436.   pfield(timealt,&xiiii);
  437.   return(0);
  438. }
  439.  
  440. /*  subtract accept date from issue date to get timely issue */ 
  441. blank9 ( sfld, buf, ier)
  442. int sfld, ier;
  443. char *buf;
  444. {
  445.   char xi[5];
  446.   short xii;
  447.   short xiii;
  448.   int xiiii;
  449.   double var;
  450.   char varx;
  451.   gfield(issdate,&xii);
  452.   gfield(accdate,&xiii);
  453.   xiiii = xii - xiii;
  454.   outbuf(sfld,&xiiii);
  455.   if (scrmode == ADD)
  456.   pfield(timei,&xiiii);
  457.   return(0);
  458. }
  459.  
  460. /*  subtract issue date from final date to get timely sol */ 
  461. blank10 ( sfld, buf, ier)
  462. int sfld, ier;
  463. char *buf;
  464. {
  465.   char xi[30];
  466.   short xii;
  467.   short xiii;
  468.   int xiiii;
  469.   double var;
  470.   char varx;
  471.   gfield(findate,&xii);
  472.   gfield(issdate,&xiii);
  473.   xiiii = xii - xiii;
  474.   outbuf(sfld,&xiiii);
  475.   pfield(timesol,&xiiii);
  476.   return(0);
  477. }
  478.  
  479. ed_date (sfld, buf, ier)
  480. int sfld, ier;
  481. char *buf;
  482. {
  483.   short jday;
  484.   char field[8];
  485.     jday = curdate ();
  486.     outbuf (sfld, &jday);
  487.     pfield(chgdate,&jday);
  488.     *(short *)buf = jday;
  489.     return (0);
  490. }
  491.  
  492. int curdate ()
  493. {
  494.     struct tm *ts, *localtime();
  495.     long tloc;
  496.     int jday, darr[3];
  497.  
  498.     time (&tloc);
  499.     ts = localtime (&tloc);
  500.     darr[0] = ++(ts -> tm_mon);
  501.     darr[1] = ts -> tm_mday;
  502.     darr[2] = ts -> tm_year;
  503.     jday = kday (darr);
  504.     return jday;
  505. }
  506.