#include /* string functions */ #include #include #include /* form header file */ #include /* key functions */ #include /* string fields */ #include /* scrollable regions */ #include /* help header file */ #include /* for choice list */ #include #include /* function prototypes */ #include #include #include options(p) /* options function */ MFORMPTR p; { char fn[] = "options"; /* for debugging system */ int status,ret; int i,func; /* loop counter,function */ INIT_MODULE(fn); /* for debugging system */ if (p != NULLP) /* from menu_opt */ status = upd_ctrl(1); /* get updated values */ else status = 4; if (status) /* record or file in use */ { if (p != NULLP) { if (! wn_isup(&ec_err)) wn_up(&ec_err); v_stpl(1,1,"Could not get/lock control record!",&ec_err); v_stpl(3,1," - PRESS ANY KEY",&ec_err); csr_hide(); bell_err(); ki(); wn_dn(&ec_err); } if (status != 4 && status != 9) /* other than no control rec */ { BTRV(b_unlock,tich_blk,(char *) &tich_buf,&tich_len,tih_key0,0); csr_hide(); EXIT_MODULE(fn); return(TOPLEVEL); } } if (p == NULLP) /* from start - no control */ clr_opts(); /* clear form fields */ if (p != NULLP) /* from menu_opt */ func = i_ptrnum(curfldp(p),p); /* get menu item number */ else func = -1; /* do all items */ if (func <= 0) /* all or defaults */ { ret = opt1(); /* run options function */ strncpy(tih_key0,"000000",6); /* control record key */ if (ret == AC_EXIT) /* form changed */ { strncpy((char *) tich_buf.control.lastic,lasticn,6); strncpy((char *) tich_buf.control.saletax,salestax,5); strncpy((char *) tich_buf.control.labrate,laborate,6); strncpy((char *) tich_buf.control.defmake,defmake,12); strncpy((char *) tich_buf.control.defcity,defcity,20); strncpy((char *) tich_buf.control.defstate,defstate,2); strncpy((char *) tich_buf.control.pbookdat,pbookdat,8); tich_buf.control.prtorder = prtorder; tich_buf.control.stations = stations; tich_buf.control.linesppg = linesppg; tich_buf.control.o_int = o_int; tich_buf.control.m_int = m_int; if (p == NULLP) strncpy((char *) tich_buf.control.password," ",8); for (i = 0; i < sizeof(tich_buf.control.reserved); i++) tich_buf.control.reserved[i] = '\0'; if (! status) /* record found */ { status = BTRV(b_upd,tich_blk,(char *) &tich_buf,&tich_len, tih_key0,0); } else { strncpy((char *) tich_buf.control.ticno,"000000",6); for (i = 0; i < 25; i++) /* use nulls for other keys */ tich_buf.control.nullkeys[i] = '\0'; strncpy((char *) tich_buf.control.lastrund,sysdate,8); tich_buf.control.refresh = 0; /* init refresh field */ for (i = 0; i < 10; i++) { strncpy((char *) &tich_buf.control.mechs[i]," ",3); strncpy((char *) &tich_buf.control.mechn[i], " ",24); } for (i = 0; i < 10; i++) { strncpy((char *) &tich_buf.control.ws[i].netname, " ",15); strncpy((char *) &tich_buf.control.ws[i].hold, " ",6); strncpy((char *) &tich_buf.control.ws[i].ticprt, " ",4); strncpy((char *) &tich_buf.control.ws[i].ordprt, " ",4); strncpy((char *) &tich_buf.control.ws[i].rptprt, " ",4); strncpy((char *) &tich_buf.control.ws[i].lblprt, " ",4); } for (i = 0; i < sizeof(tich_buf.control.reserved); i++) tich_buf.control.reserved[i] = ' '; status = BTRV(b_insert,tich_blk,(char *) &tich_buf, &tich_len,tih_key0,0); } if (status) { BTRV(b_unlock,tich_blk,(char *) &tich_buf,&tich_len,tih_key0,0); wfd_btr_err(status,"ECTICH.DAT",fn,"update/insert"); et_rplevnt(KEY_F2,(EVENTFP) calcit,FMETP); csr_hide(); EXIT_MODULE(fn); /* for debugging system */ return(TOPLEVEL); } status = BTRV(b_getpos,tich_blk,(char *) &tich_buf,&tich_len, tih_key0,0); tich_len = sizeof(tich_buf); /* getpos resets it to 4 */ if (status) /* error on getpos */ { BTRV(b_unlock,tich_blk,(char *) &tich_buf,&tich_len,tih_key0,0); wfd_btr_err(status,"ECTICH.DAT",fn,"getpos"); et_rplevnt(KEY_F2,(EVENTFP) calcit,FMETP); csr_hide(); EXIT_MODULE(fn); /* for debugging system */ return(TOPLEVEL); } status = BTRV(b_getdrc+b_snwlock,tich_blk,(char *) &tich_buf, &tich_len,tih_key0,0); } if (func == 0) { BTRV(b_unlock,tich_blk,(char *) &tich_buf,&tich_len,tih_key0,0); et_rplevnt(KEY_F2,(EVENTFP) calcit,FMETP); csr_hide(); EXIT_MODULE(fn); /* for debugging system */ return(SAMELEVEL); } } if (func < 0 || func == 1) { ret = opt2(); /* run options 2 function */ if (ret == AC_EXIT) /* form processed */ { for (i = 0; i < 10; i++) { strncpy((char *) &tich_buf.control.mechs[i], (char *) &pmechanic[i],3); strncpy((char *) &tich_buf.control.mechn[i], (char *) &nmechanic[i],24); } status = BTRV(b_upd,tich_blk,(char *) &tich_buf,&tich_len, tih_key0,0); if (status) { BTRV(b_unlock,tich_blk,(char *) &tich_buf,&tich_len,tih_key0,0); wfd_btr_err(status,"ECTICH.DAT",fn,"update"); et_rplevnt(KEY_F2,(EVENTFP) calcit,FMETP); csr_hide(); EXIT_MODULE(fn); /* for debugging system */ return(TOPLEVEL); } } if (func == 1) { BTRV(b_unlock,tich_blk,(char *) &tich_buf,&tich_len,tih_key0,0); et_rplevnt(KEY_F2,(EVENTFP) calcit,FMETP); csr_hide(); EXIT_MODULE(fn); /* for debugging system */ return(SAMELEVEL); } } if (func < 0 || func == 2) { if (p != NULLP) ret = opt3(); /* password form */ else ret = 0; if (ret || func == 2) { BTRV(b_unlock,tich_blk,(char *) &tich_buf,&tich_len,tih_key0,0); et_rplevnt(KEY_F2,(EVENTFP) calcit,FMETP); csr_hide(); EXIT_MODULE(fn); if (ret) return(TOPLEVEL); return(SAMELEVEL); } } if (func < 0 || func == 3) { ret = opt4(); /* printers form */ if (ret || func == 3) { BTRV(b_unlock,tich_blk,(char *) &tich_buf,&tich_len,tih_key0,0); et_rplevnt(KEY_F2,(EVENTFP) calcit,FMETP); csr_hide(); EXIT_MODULE(fn); if (ret) return(TOPLEVEL); return(SAMELEVEL); } } BTRV(b_unlock,tich_blk,(char *) &tich_buf,&tich_len,tih_key0,0); et_rplevnt(KEY_F2,(EVENTFP) calcit,FMETP); csr_hide(); EXIT_MODULE(fn); /* for debugging system */ return(SAMELEVEL); } clr_opts() /* clear option fields */ { int i; strcpy(laborate," "); /* clear form fields */ strcpy(lasticn," "); strcpy(salestax," "); strcpy(defmake," "); strcpy(defcity," "); strcpy(defstate," "); for (i = 0; i < 10; i++) { strcpy((char *) &pmechanic[i]," "); strcpy((char *) &nmechanic[i]," "); } prtorder = 'Y'; stations = 0; linesppg = 66; for (i = 0; i < 10; i++) { strcpy((char *) &fstats[i].netname," "); strcpy((char *) &fstats[i].hold," "); strcpy((char *) &fstats[i].ticprt," "); strcpy((char *) &fstats[i].ordprt," "); strcpy((char *) &fstats[i].rptprt," "); strcpy((char *) &fstats[i].lblprt," "); } strcpy(ticprt," "); strcpy(ordprt," "); strcpy(rptprt," "); strcpy(lblprt," "); return(0); } opt1() { char fn[] = "opt1"; DFORMPTR opt1fm; DFIELDPTR fp; int status; INIT_MODULE(fn); opt1fm = fm_def(7,18,16,46,LNORMAL,BDR_DLNP); /* options form */ sfm_help("*OPT1FM",opt1fm); sw_title(" Options ",(UCHAR) LMNACT,TOPCENTER,opt1fm->wnp); fp = fld_def(1,1," Last Ticket Number ",FADJACENT,"999999", F_STRING,lasticn,opt1fm); sf_opt(TRAILBLANKS,ON,fp); /* retain trailing blanks */ sf_opt(RTADJUST,ON,fp); /* right-adjust on exit */ sf_msg(msgline,fp); sf_endfp(endticn,fp); /* endticn() in ecfuncs.c */ fp = fld_def(2,1," Current Price Book ",FADJACENT,"99/99/99", F_DATE,pbookdat,opt1fm); sf_opt(TRAILBLANKS,ON,fp); /* retain trailing blanks */ sf_msg(msgline,fp); fp = fld_def(3,1," Sales Tax Rate (%) ",FADJACENT,"#####", F_STRING,salestax,opt1fm); sf_opt(TRAILBLANKS,ON,fp); /* retain trailing blanks */ sf_opt(CLEARONKEY,ON,fp); /* clear on first entry */ sf_opt(RTADJUST,ON,fp); /* right-adjust on exit */ sf_msg(msgline,fp); fp = fld_def(4,1," Labor Rate Per Hr ",FADJACENT,"###@##", F_STRING,laborate,opt1fm); sf_opt(TRAILBLANKS,ON,fp); /* retain trailing blanks */ sf_opt(CLEARONKEY,ON,fp); /* clear on first entry */ sf_opt(RTADJUST,ON,fp); /* right-adjust on exit */ sf_endfp(lrate,fp); /* install end field func */ sf_msg(msgline,fp); fp = fld_def(5,1," Default Car Make ",FADJACENT,"!!!!!!!!!!!!", F_STRING,defmake,opt1fm); sf_opt(TRAILBLANKS,ON,fp); /* retain trailing blanks */ sf_msg(msgline,fp); fp = fld_def(6,1," .. Customer City ",FADJACENT,"XXXXXXXXXXXXXXXXXXXX", F_STRING,defcity,opt1fm); sf_opt(TRAILBLANKS,ON,fp); /* retain trailing blanks */ sf_msg(msgline,fp); fp = fld_def(7,1," .. Customer State ",FADJACENT,"!!", F_STRING,defstate,opt1fm); sf_opt(TRAILBLANKS,ON,fp); /* retain trailing blanks */ sf_msg(msgline,fp); fp = fld_def(8,1," Use Customer Order ",FADJACENT,"!", F_BOOL,&prtorder,opt1fm); sf_opt(TRAILBLANKS,ON,fp); /* retain trailing blanks */ sf_msg(msgline,fp); fp = fld_def(9,1," Lines/Ticket Form ",FADJACENT,"99", F_INT,(char *) &linesppg,opt1fm); sf_msg(msgline,fp); fp = fld_def(10,1," # Network Stations ",FADJACENT,"99", F_INT,(char *) &stations,opt1fm); sf_valfp(valnets,fp); /* install validation func */ sf_msg(msgline,fp); fp = fld_def(11,1," Oil Change Interval ",FADJACENT,"999", F_LONG,(char *) &o_int,opt1fm); sf_msg(msgline,fp); bg_txtdef(11,26,"days",LNORMAL,opt1fm); fp = fld_def(12,1,"Maintenance Interval ",FADJACENT,"999", F_LONG,(char *) &m_int,opt1fm); sf_msg(msgline,fp); bg_txtdef(12,26,"days",LNORMAL,opt1fm); status = fm_proc(0,opt1fm); /* process form */ fm_free(opt1fm); /* free form memory */ EXIT_MODULE(fn); return(status); } opt2() { char fn[] = "opt2"; DFORMPTR opt2fm; DFIELDPTR fp; int status; int i; INIT_MODULE(fn); opt2fm = fm_def(8,14,14,52,LNORMAL,BDR_DLNP); /* options form */ sfm_help("*OPT2FM",opt2fm); sw_title(" Mechanics ",(UCHAR) LMNACT,TOPCENTER,opt2fm->wnp); for (i = 0; i < 10; i++) { fp = fld_def(i+1,1,"Mechanic Code ",FADJACENT,"!!!", F_STRING,(char *) &pmechanic[i],opt2fm); sf_opt(TRAILBLANKS,ON,fp); /* retain trailing blanks */ sf_msg(msgline,fp); fp = fld_def(i+1,20,"Name ",FADJACENT,"XXXXXXXXXXXXXXXXXXXXXXXX", F_STRING,(char *) &nmechanic[i],opt2fm); sf_opt(TRAILBLANKS,ON,fp); /* retain trailing blanks */ sf_msg(msgline,fp); } status = fm_proc(0,opt2fm); /* process form */ fm_free(opt2fm); /* free form memory */ EXIT_MODULE(fn); /* for debugging system */ return(status); } lrate(formp) /* convert entry to dollars */ DFORMPTR formp; { char fn[] = "lrate"; double amount; /* float value of amount */ char str[7]; /* temp area for string */ INIT_MODULE(fn); if (ki_last() == KEY_ESC) /* Escape pressed */ { EXIT_MODULE(fn); return(1); } fld_get(str,curfldp(formp),formp); /* get entered value */ amount = atof(str); /* convert entry to float pt */ if (amount >= 1000.00) /* too large for field */ { if (! wn_isup(&ec_err)) wn_up(&ec_err); v_stpl(1,1,"Amount of $1,000 or more is",&ec_err); v_stpl(2,1,"invalid - PRESS ANY KEY",&ec_err); csr_hide(); bell_err(); ki(); wn_dn(&ec_err); sfm_nextitem(AC_SAMEITEM,formp); /* stay in labor rate field */ EXIT_MODULE(fn); return(1); } sprintf(str,"%6.2f",amount); /* convert back to string */ fld_upd(str,curfldp(formp),formp); /* update field */ EXIT_MODULE(fn); return(1); } valnets(num,pic_st,formp) /* check for valid # stations*/ UCHAR *num; /* ptr to copy of entry */ UCHAR *pic_st; /* ptr to picture string */ DFORMPTR formp; { char fn[] = "valnets"; int number; /* entered number */ INIT_MODULE(fn); fld_get((char *) &number, curfldp(formp), formp); if (number < 0 || number > 10) { wn_up(&ec_err); v_stpl(1,1,"Number of stations must be 0-10",&ec_err); v_stpl(3,1," - PRESS ANY KEY",&ec_err); bell_err(); ki(); wn_dn(&ec_err); EXIT_MODULE(fn); return(FALSE); /* Must be 0-10 */ } EXIT_MODULE(fn); return(TRUE); } opt3() { char fn[] = "opt3"; DFORMPTR opt3fm; /* form for password */ DFIELDPTR fldp; int status; char curpw[9]; char newpw[9]; INIT_MODULE(fn); opt3fm = fm_def(8,25,7,29,LNORMAL,BDR_DLNP); /* opt3 form */ sfm_help("*OPT3FM",opt3fm); sw_title(" Ticket Password ",(UCHAR) LMNACT,TOPCENTER,opt3fm->wnp); fldp = fld_def(1,1,"Current Password ",FADJACENT,"XXXXXXXX",F_STRING, curpw,opt3fm); sf_valfp(valpw,fldp); sf_opt(INITIALBLANKS,ON,fldp); sf_opt(TRAILBLANKS,ON,fldp); sf_msg(msgline,fldp); fldp = fld_def(3,1," New Password ",FADJACENT,"XXXXXXXX",F_STRING, newpw,opt3fm); sf_opt(INITIALBLANKS,ON,fldp); sf_opt(TRAILBLANKS,ON,fldp); sf_msg(msgline,fldp); if (fm_proc(0,opt3fm) != AC_EXIT) { fm_free(opt3fm); EXIT_MODULE(fn); return(0); } status = BTRV(b_getpos,tich_blk,(char *) &tich_buf,&tich_len,tih_key0,0); tich_len = sizeof(tich_buf); /* getpos resets it to 4 */ if (status) /* error on getpos */ { fm_free(opt3fm); wfd_btr_err(status,"ECTICH.DAT",fn,"getpos"); EXIT_MODULE(fn); /* for debugging system */ return(1); } status = BTRV(b_getdrc+b_snwlock,tich_blk,(char *) &tich_buf, &tich_len,tih_key0,0); if (! status) { strncpy((char *) tich_buf.control.password,newpw,8); status = BTRV(b_upd,tich_blk,(char *) &tich_buf,&tich_len,tih_key0,0); if (status) wfd_btr_err(status,"ECTICH.DAT",fn,"update"); else strncpy(password,newpw,8); } else { wfd_btr_err(status,"ECTICH.DAT",fn,"getdrc"); } fm_free(opt3fm); EXIT_MODULE(fn); return(status); } opt4() { char fn[] = "opt4"; int status,i,j,k; INIT_MODULE(fn); if (stations) def_m4opt(); else def_4opt(); if (fm_proc(0,opt4fm) != AC_EXIT) { fm_free(opt4fm); EXIT_MODULE(fn); return(0); } status = BTRV(b_getpos,tich_blk,(char *) &tich_buf,&tich_len,tih_key0,0); tich_len = sizeof(tich_buf); /* getpos resets it to 4 */ if (status) /* error on getpos */ { fm_free(opt4fm); wfd_btr_err(status,"ECTICH.DAT",fn,"getpos"); EXIT_MODULE(fn); /* for debugging system */ return(1); } status = BTRV(b_getdrc+b_snwlock,tich_blk, (char *) &tich_buf,&tich_len,tih_key0,0); if (status) /* error on getdrc */ { fm_free(opt4fm); wfd_btr_err(status,"ECTICH.DAT",fn,"getdrc"); EXIT_MODULE(fn); /* for debugging system */ return(1); } if (stations) { for (i = 0,j = 0,k = 0; i < 10; i++) { if (st_isblank((char *) &fstats[i].netname)) continue; if (strncmp(fstats[i].netname,netname,15) == 0) k = i; /* save matching position */ strncpy((char *) &tich_buf.control.ws[j].netname, fstats[i].netname,15); strncpy((char *) &tich_buf.control.ws[j].hold, fstats[i].hold,6); strncpy((char *) &tich_buf.control.ws[j].ticprt, fstats[i].ticprt,4); strncpy((char *) &tich_buf.control.ws[j].ordprt, fstats[i].ordprt,4); strncpy((char *) &tich_buf.control.ws[j].rptprt, fstats[i].rptprt,4); strncpy((char *) &tich_buf.control.ws[j].lblprt, fstats[i].lblprt,4); j += 1; } for (; j < 10; j++) { strncpy((char *) &tich_buf.control.ws[j].netname,blanks,15); strncpy((char *) &tich_buf.control.ws[j].hold,blanks,6); strncpy((char *) &tich_buf.control.ws[j].ticprt,blanks,4); strncpy((char *) &tich_buf.control.ws[j].ordprt,blanks,4); strncpy((char *) &tich_buf.control.ws[j].rptprt,blanks,4); strncpy((char *) &tich_buf.control.ws[j].lblprt,blanks,4); } strcpy(ticprt,fstats[k].ticprt); strcpy(ordprt,fstats[k].ordprt); strcpy(rptprt,fstats[k].rptprt); strcpy(lblprt,fstats[k].lblprt); } else { strncpy((char *) &tich_buf.control.ws[0].ticprt,ticprt,4); strncpy((char *) &tich_buf.control.ws[0].ordprt,ordprt,4); strncpy((char *) &tich_buf.control.ws[0].rptprt,rptprt,4); strncpy((char *) &tich_buf.control.ws[0].lblprt,lblprt,4); } status = BTRV(b_upd,tich_blk,(char *) &tich_buf,&tich_len,tih_key0,0); if (status) wfd_btr_err(status,"ECTICH.DAT",fn,"update"); fm_free(opt4fm); EXIT_MODULE(fn); return(status); } valprt(num,pic_st,formp) /* check for valid printer */ UCHAR *num; /* ptr to copy of entry */ UCHAR *pic_st; /* ptr to picture string */ DFORMPTR formp; { char fn[] = "valprt"; char prt[5]; int retval = 0; INIT_MODULE(fn); fld_get(prt, curfldp(formp), formp); if (st_isblank(prt)) retval = TRUE; if (strcmp(prt,"LPT1") == 0) retval = TRUE; if (strcmp(prt,"LPT2") == 0) retval = TRUE; if (strcmp(prt,"LPT3") == 0) retval = TRUE; if (! retval) { wn_up(&ec_err); v_stpl(1,1,"Printer must be LPT1, LPT2 or LPT3",&ec_err); v_stpl(3,1," - PRESS ANY KEY",&ec_err); bell_err(); ki(); wn_dn(&ec_err); } EXIT_MODULE(fn); return(retval); } def_4opt() { char fn[] = "def_4opt"; DFIELDPTR fldp; INIT_MODULE(fn); opt4fm = fm_def(8,29,8,23,LNORMAL,BDR_DLNP); /* opt4 form */ sw_title(" Printers ",(UCHAR) LMNACT,TOPCENTER,opt4fm->wnp); sfm_help("*PRTFM",opt4fm); fldp = fld_def(1,1,"Ticket Printer ",FADJACENT,"!!!!",F_STRING, ticprt,opt4fm); sf_clist("*Printers",CLWRAP | CLAUTOMOVE,choices,(FIELDPTR) fldp); sf_msg(msgline2,fldp); sf_begfp(begclist,fldp); sf_valfp(valprt,fldp); sf_endfp(endclist,fldp); sf_opt(TRAILBLANKS,ON,fldp); fldp = fld_def(2,1," Order Printer ",FADJACENT,"!!!!",F_STRING, ordprt,opt4fm); sf_clist("*Printers",CLWRAP | CLAUTOMOVE,choices,(FIELDPTR) fldp); sf_msg(msgline2,fldp); sf_begfp(begclist,fldp); sf_valfp(valprt,fldp); sf_endfp(endclist,fldp); sf_opt(TRAILBLANKS,ON,fldp); fldp = fld_def(3,1,"Report Printer ",FADJACENT,"!!!!",F_STRING, rptprt,opt4fm); sf_clist("*Printers",CLWRAP | CLAUTOMOVE,choices,(FIELDPTR) fldp); sf_msg(msgline2,fldp); sf_begfp(begclist,fldp); sf_valfp(valprt,fldp); sf_endfp(endclist,fldp); sf_opt(TRAILBLANKS,ON,fldp); fldp = fld_def(4,1," Label Printer ",FADJACENT,"!!!!",F_STRING, lblprt,opt4fm); sf_clist("*Printers",CLWRAP | CLAUTOMOVE,choices,(FIELDPTR) fldp); sf_msg(msgline2,fldp); sf_begfp(begclist,fldp); sf_valfp(valprt,fldp); sf_endfp(endclist,fldp); sf_opt(TRAILBLANKS,ON,fldp); EXIT_MODULE(fn); return(0); } def_m4opt() { char fn[] = "def_m4opt"; DFIELDPTR fldp; SRPTR srp; INIT_MODULE(fn); opt4fm = fm_def(8,13,15,54,LNORMAL,BDR_DLNP); /* printers form */ sfm_help("*MPRTFM",opt4fm); /* install help keyword */ sfm_opt(CURSORCROSS,OFF,opt4fm); /* turn off left-right arrow */ sw_title(" Network Stations ",LMNACT,TOPCENTER,opt4fm->wnp); bg_txtdef(0,32,"Printers",LNORMAL,opt4fm); bg_txtdef(1,1,"Network Name",LNORMAL,opt4fm); bg_txtdef(1,19,"Ticket",LNORMAL,opt4fm); bg_txtdef(1,28,"Order",LNORMAL,opt4fm); bg_txtdef(1,37,"Report",LNORMAL,opt4fm); bg_txtdef(1,46,"Label",LNORMAL,opt4fm); bg_linedef(2,0,52,RIGHT | X_LINEBDR,LNORMAL,LINE_SLNP,opt4fm); bg_linedef(0,17,13,DOWN | X_LINEBDR,LNORMAL,LINE_SLNP,opt4fm); bg_linedef(1,26,12,DOWN | X_LINEBDR,LNORMAL,LINE_SLNP,opt4fm); bg_linedef(1,35,12,DOWN | X_LINEBDR,LNORMAL,LINE_SLNP,opt4fm); bg_linedef(1,44,12,DOWN | X_LINEBDR,LNORMAL,LINE_SLNP,opt4fm); srp = sr_def(3,0,10,52,LNORMAL,BDR_NULLP,10,(PTR) &fstats, sizeof(WS),opt4fm); ssr_begrowfp(begnet,srp); /* install begin field func */ fldp = srf_def(1,NULLP,1,pic_def('!',15),F_STRING,fstats[0].netname,srp); sf_endfp(endnet,fldp); sf_opt(TRAILBLANKS,ON,fldp); sf_msg(msgline,fldp); fldp = srf_def(20,NULLP,20,"!!!!",F_STRING,fstats[0].ticprt,srp); sf_clist("*Printers",CLWRAP | CLAUTOMOVE,choices,(FIELDPTR) fldp); sf_msg(msgline2,fldp); sf_begfp(begclist,fldp); sf_valfp(valprt,fldp); sf_endfp(endclist,fldp); sf_opt(TRAILBLANKS,ON,fldp); fldp = srf_def(29,NULLP,29,"!!!!",F_STRING,fstats[0].ordprt,srp); sf_clist("*Printers",CLWRAP | CLAUTOMOVE,choices,(FIELDPTR) fldp); sf_msg(msgline2,fldp); sf_begfp(begclist,fldp); sf_valfp(valprt,fldp); sf_endfp(endclist,fldp); sf_opt(TRAILBLANKS,ON,fldp); fldp = srf_def(38,NULLP,38,"!!!!",F_STRING,fstats[0].rptprt,srp); sf_clist("*Printers",CLWRAP | CLAUTOMOVE,choices,(FIELDPTR) fldp); sf_msg(msgline2,fldp); sf_begfp(begclist,fldp); sf_valfp(valprt,fldp); sf_endfp(endclist,fldp); sf_opt(TRAILBLANKS,ON,fldp); fldp = srf_def(47,NULLP,47,"!!!!",F_STRING,fstats[0].lblprt,srp); sf_clist("*Printers",CLWRAP | CLAUTOMOVE,choices,(FIELDPTR) fldp); sf_msg(msgline2,fldp); sf_begfp(begclist,fldp); sf_valfp(valprt,fldp); sf_endfp(endclist,fldp); sf_opt(TRAILBLANKS,ON,fldp); EXIT_MODULE(fn); return(0); } begnet(fmp) /* opt4 begin row function */ DFORMPTR fmp; { char fn[] = "begnet"; int row,col; DFIELDPTR fp; /* ptr to field def */ SRPTR srp; char name[16]; INIT_MODULE(fn); srp = cursrp(fmp); /* point to scrollable region*/ col = sr_curcol(srp); /* get current column */ row = sr_currow(srp); /* get row in form */ fp = srf_ptr(row,0,srp); /* get ptr to field */ srf_get(name,row,0,srp); /* get network name */ if (st_isblank(name)) /* network name blank */ { sf_opt(PROTECTED,OFF,fp); /* can enter network name */ sf_msg(msgline1,fp); if (col > 0) /* did not start in netname */ ssr_nextpos(AC_SAMEROW,AC_FIRSTCOL,srp); EXIT_MODULE(fn); return(1); } et_rplevnt(KEY_F9,(EVENTFP) net_del,SRETP); sf_msg(msgline4,fp); sf_opt(PROTECTED,ON,fp); /* cannot reenter net name */ if (col > 0) /* did not start in netname */ ssr_nextpos(AC_SAMEROW,AC_FIRSTCOL,srp); EXIT_MODULE(fn); return(1); } net_del(fmp,eventptr) /* delete netname function */ DFORMPTR fmp; EVENTPTR eventptr; { char fn[] = "net_del"; char resp = 'N'; /* field for askfm */ int row; /* row in scrollable form */ int status; DFORMPTR askfm; DFIELDPTR afldp,fp; /* ptr to field structure */ SRPTR srp; INIT_MODULE(fn); askfm = fm_def(10,18,8,43,(UCHAR) LMNINACT,BDR_DLNP); sfm_opt(AUTOEXIT,ON,askfm); /* don't need to press F10 */ sfm_help("*ASKFM",askfm); /* install help keyword */ resp = 'N'; /* initialize response */ bg_txtdef(1,1,"Are you sure you want to remove this",LMNINACT,askfm); bg_txtdef(2,1,"network name from the list?",LMNINACT,askfm); afldp = fld_def(4,1,"Enter 'Y' to remove name, 'N' to quit ",FADJACENT, "!",F_BOOL,(PTR) &resp,askfm); sf_msg(msgline,afldp); bell_vv(); status = fm_proc(0,askfm); fm_free(askfm); if (status != AC_EXIT || resp == 'N') /* Esc pressed, error or 'N' */ { EXIT_MODULE(fn); return(1); } srp = cursrp(fmp); /* point to scrollable region*/ row = sr_currow(srp); /* get row in form */ if (! st_isblank((char *) &fstats[row].hold)) { if (! wn_isup(&ec_err)) wn_up(&ec_err); v_stpl(1,1,"This workstation is currently working",&ec_err); v_stpl(2,1,"on ticket ",&ec_err); v_st((char *) &fstats[row].hold,&ec_err); v_stpl(3,1,"You cannot delete it in this function",&ec_err); v_stpl(4,1," - PRESS ANY KEY",&ec_err); csr_hide(); bell_err(); ki(); wn_dn(&ec_err); ssr_nextpos(AC_SAMEROW,AC_SAMECOL,srp); EXIT_MODULE(fn); return(1); } fp = srf_ptr(row,0,srp); /* get ptr to field */ sf_opt(PROTECTED,OFF,fp); /* no longer protected field */ strcpy(fstats[row].netname," "); /* clear fields */ strcpy(fstats[row].hold," "); strcpy(fstats[row].ticprt," "); strcpy(fstats[row].ordprt," "); strcpy(fstats[row].rptprt," "); strcpy(fstats[row].lblprt," "); srf_upd(" ",row,0,srp); /* clear form fields */ srf_upd(" ",row,1,srp); srf_upd(" ",row,2,srp); srf_upd(" ",row,3,srp); srf_upd(" ",row,4,srp); ssr_nextpos(AC_NEXTROW,AC_FIRSTCOL,srp); EXIT_MODULE(fn); return(1); } endnet(fmp) DFORMPTR(fmp); { char fn[] = "endnet"; INIT_MODULE(fn); et_rplevnt(KEY_F9,NULLFP,SRETP); EXIT_MODULE(fn); return(1); }