home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 2 / FreeSoftwareCollection2pd199x-jp.img / ms_dos / setprn / setprn.c next >
Text File  |  1990-06-14  |  5KB  |  172 lines

  1. /*******************************/
  2. /* ファイル名:SETPRN.C   V1.1 L05  */
  3. /* 作成者:中山裕子             */
  4. /* プリンタ環境設定プログラム  */
  5. /*******************************/
  6. /*
  7.      ソース履歴
  8. -------------------------------------------------------------------------------
  9.    中山裕子    :88/12/27 初版
  10.    あきんど    :89/02/10 L02 (機能追加:複数パラメータ対応/環境ファイル検索
  11.    鈴木和典    :89/02/21 L03 (バク修正:会話形式で複数パラメータに対応不可)
  12.    鈴木和典    :89/03/06 L04 (バク修正:L03 修正誤りを訂正)
  13.    鈴木和典    :89/03/06 L04 (バク修正:パラメータの長さ異常でも一致になる)
  14.    鈴木和典    :89/03/06 L04 (バク修正:オーダ名を表示時行間があく)
  15.    鈴木和典    :89/03/06 L05 (機能追加:パラメータ範囲外時はベルを鳴らす)
  16. -------------------------------------------------------------------------------
  17.  
  18. */
  19. #include <math.h>
  20. #include <stdio.h>
  21. #include <string.h>
  22.  
  23. extern int setprn1(char *);
  24. extern int setprn2(char *, char *);
  25. extern void lineedt(char *);
  26.  
  27.  
  28. FILE *prnp, *cndp;
  29.  
  30. void main(argc,argv)
  31.   int argc;
  32.   char *argv[];
  33.   {
  34.     char pala[32], envfile[80],envfile2[80];
  35.     char *charp;
  36.     int prmno,ret;
  37.  
  38.     printf("SETPRiNter V1.1 L05\n");
  39.     printf("copyright by XXXXXX 1989 all right reserved\n");
  40.     if ((prnp=fopen("PRN","wb+"))==NULL) {    /* プリンタチェック */
  41.       printf("プリンタが使用できません。\n");
  42.       return; }
  43.  
  44.     strcpy(envfile,argv[0]);        /* パス上の環境ファイル名作成 */
  45.     if ( (charp = strchr(envfile,'.') ) != NULL) *charp = NULL;
  46.     strcat(envfile,".CND");
  47.  
  48.     strcpy(envfile2,envfile);        /* カレント環境ファイル名作成 */
  49.     strrev(envfile);
  50.     if ( (charp = strchr(envfile,'\x5c') ) != NULL) *charp = NULL;
  51.     strrev(envfile);
  52.  
  53.     if ((cndp=fopen(envfile,"rb+"))==NULL) {    /* カレント環境ファイル */
  54.       if ((cndp=fopen(envfile2,"rb+"))==NULL) {    /* パス上の環境ファイル */
  55.           printf("コントロールファイルが見つかりません。\n");
  56.           printf("検索したファイル: %s\n",envfile);
  57.           printf("                  %s\n",envfile2);
  58.           return; }
  59.       strcpy(envfile,envfile2);
  60.     }
  61.       fclose(cndp);
  62.  
  63.       printf("control file=%s\n",envfile);
  64.  
  65.       switch(argc) {
  66.         case 1:
  67.         ret=setprn1(envfile);
  68.         break;
  69.         default :
  70.         prmno=0;
  71.         ret=0;
  72.         while(++prmno < argc) {
  73.           strcpy(pala, argv[prmno]);
  74.           ret=setprn2(envfile,pala);
  75.           if (ret==-2) printf("パラメータ誤り=%s\n",argv[prmno]);
  76.         }
  77.       }
  78.       fclose(prnp);
  79.   }
  80.  
  81. /* 印刷オーダ送信 (会話形式) */
  82. setprn1(file)
  83.   char *file;
  84.   {
  85.     char buf[256], input[8];
  86.     char *charp;
  87.     int cmdno, cnt=0;
  88.  
  89.     if ((cndp=fopen(file,"rb"))!=NULL) {
  90.       printf("No.  オーダ名  概要\n");             /* タイトル表示 */
  91.       cmdno=1;
  92.       while((fgets(buf,256,cndp))!=NULL) {       /* オーダ内容表示 */
  93.         if (*buf=='#') {
  94.           buf[strlen(buf)-2]=NULL;
  95.           printf("%2d   %-8s",cmdno++, buf+1);
  96.           fgets(buf,256,cndp);
  97.           printf("%s",buf);
  98.         }
  99.       }
  100.       fclose(cndp);
  101.  
  102.       for (;;) {
  103.         printf("オーダ番号を入力して下さい  ('0'で終了します)  ");
  104.         scanf("%s", input);
  105.  
  106.         if ( atoi(input) == 0 ) return(0);
  107.         else if ( atoi(input) >= cmdno )
  108.           printf("\a");
  109.         else {
  110.           if ((cndp=fopen(file,"rb"))!=NULL) {
  111.             while((fgets(buf,256,cndp))!=NULL) {
  112.               lineedt(buf);
  113.               if (*buf=='#' && ++cnt==atoi(input)) {
  114.                 fgets(buf,256,cndp);
  115.                 fgets(buf,256,cndp);
  116.                 lineedt(buf);
  117.                 fputs(buf,prnp);
  118.                 cnt=0;
  119.                 break;
  120.               }
  121.             }
  122.             fclose(cndp);
  123.           }
  124.         }
  125.       }
  126.     }
  127.     else return(-1);
  128.   }
  129.  
  130. /* 印刷オーダ送信 (コマンド形式) */
  131. setprn2(file,pala)
  132.   char *pala;
  133.   char *file;
  134.   {
  135.     char buf[256+1];
  136.  
  137.     if (strlen(pala) > 8) return(-2);
  138.  
  139.     if ((cndp=fopen(file,"rb"))!=NULL) {
  140.       while((fgets(buf,256,cndp))!=NULL) {
  141.         lineedt(buf);
  142.         if (*buf=='#') {
  143.           if (stricmp(buf+1, pala)==0) {
  144.             fgets(buf,256,cndp);
  145.             lineedt(buf);
  146.             printf("%s\n",buf);
  147.             fgets(buf,256,cndp);
  148.             lineedt(buf);
  149.             fputs(buf,prnp);
  150.             fclose(cndp);
  151.             return(0);
  152.           }
  153.         }
  154.       }
  155.       fclose(cndp);
  156.       return(-2);
  157.     }
  158.     else return(-1);
  159.   }
  160.  
  161. /* ファイル情報編集 */
  162. void lineedt(buf)
  163.   char *buf;
  164.   {
  165.     char *charp;
  166.  
  167.     if ( (charp = strchr(buf,'\n') ) != NULL) {
  168.       *charp=NULL;
  169.       *(charp-1)=NULL;
  170.     }
  171.   }
  172.