home *** CD-ROM | disk | FTP | other *** search
- /*******************************/
- /* ファイル名:SETPRN.C V1.1 L05 */
- /* 作成者:中山裕子 */
- /* プリンタ環境設定プログラム */
- /*******************************/
- /*
- ソース履歴
- -------------------------------------------------------------------------------
- 中山裕子 :88/12/27 初版
- あきんど :89/02/10 L02 (機能追加:複数パラメータ対応/環境ファイル検索
- 鈴木和典 :89/02/21 L03 (バク修正:会話形式で複数パラメータに対応不可)
- 鈴木和典 :89/03/06 L04 (バク修正:L03 修正誤りを訂正)
- 鈴木和典 :89/03/06 L04 (バク修正:パラメータの長さ異常でも一致になる)
- 鈴木和典 :89/03/06 L04 (バク修正:オーダ名を表示時行間があく)
- 鈴木和典 :89/03/06 L05 (機能追加:パラメータ範囲外時はベルを鳴らす)
- -------------------------------------------------------------------------------
-
- */
- #include <math.h>
- #include <stdio.h>
- #include <string.h>
-
- extern int setprn1(char *);
- extern int setprn2(char *, char *);
- extern void lineedt(char *);
-
-
- FILE *prnp, *cndp;
-
- void main(argc,argv)
- int argc;
- char *argv[];
- {
- char pala[32], envfile[80],envfile2[80];
- char *charp;
- int prmno,ret;
-
- printf("SETPRiNter V1.1 L05\n");
- printf("copyright by XXXXXX 1989 all right reserved\n");
- if ((prnp=fopen("PRN","wb+"))==NULL) { /* プリンタチェック */
- printf("プリンタが使用できません。\n");
- return; }
-
- strcpy(envfile,argv[0]); /* パス上の環境ファイル名作成 */
- if ( (charp = strchr(envfile,'.') ) != NULL) *charp = NULL;
- strcat(envfile,".CND");
-
- strcpy(envfile2,envfile); /* カレント環境ファイル名作成 */
- strrev(envfile);
- if ( (charp = strchr(envfile,'\x5c') ) != NULL) *charp = NULL;
- strrev(envfile);
-
- if ((cndp=fopen(envfile,"rb+"))==NULL) { /* カレント環境ファイル */
- if ((cndp=fopen(envfile2,"rb+"))==NULL) { /* パス上の環境ファイル */
- printf("コントロールファイルが見つかりません。\n");
- printf("検索したファイル: %s\n",envfile);
- printf(" %s\n",envfile2);
- return; }
- strcpy(envfile,envfile2);
- }
- fclose(cndp);
-
- printf("control file=%s\n",envfile);
-
- switch(argc) {
- case 1:
- ret=setprn1(envfile);
- break;
- default :
- prmno=0;
- ret=0;
- while(++prmno < argc) {
- strcpy(pala, argv[prmno]);
- ret=setprn2(envfile,pala);
- if (ret==-2) printf("パラメータ誤り=%s\n",argv[prmno]);
- }
- }
- fclose(prnp);
- }
-
- /* 印刷オーダ送信 (会話形式) */
- setprn1(file)
- char *file;
- {
- char buf[256], input[8];
- char *charp;
- int cmdno, cnt=0;
-
- if ((cndp=fopen(file,"rb"))!=NULL) {
- printf("No. オーダ名 概要\n"); /* タイトル表示 */
- cmdno=1;
- while((fgets(buf,256,cndp))!=NULL) { /* オーダ内容表示 */
- if (*buf=='#') {
- buf[strlen(buf)-2]=NULL;
- printf("%2d %-8s",cmdno++, buf+1);
- fgets(buf,256,cndp);
- printf("%s",buf);
- }
- }
- fclose(cndp);
-
- for (;;) {
- printf("オーダ番号を入力して下さい ('0'で終了します) ");
- scanf("%s", input);
-
- if ( atoi(input) == 0 ) return(0);
- else if ( atoi(input) >= cmdno )
- printf("\a");
- else {
- if ((cndp=fopen(file,"rb"))!=NULL) {
- while((fgets(buf,256,cndp))!=NULL) {
- lineedt(buf);
- if (*buf=='#' && ++cnt==atoi(input)) {
- fgets(buf,256,cndp);
- fgets(buf,256,cndp);
- lineedt(buf);
- fputs(buf,prnp);
- cnt=0;
- break;
- }
- }
- fclose(cndp);
- }
- }
- }
- }
- else return(-1);
- }
-
- /* 印刷オーダ送信 (コマンド形式) */
- setprn2(file,pala)
- char *pala;
- char *file;
- {
- char buf[256+1];
-
- if (strlen(pala) > 8) return(-2);
-
- if ((cndp=fopen(file,"rb"))!=NULL) {
- while((fgets(buf,256,cndp))!=NULL) {
- lineedt(buf);
- if (*buf=='#') {
- if (stricmp(buf+1, pala)==0) {
- fgets(buf,256,cndp);
- lineedt(buf);
- printf("%s\n",buf);
- fgets(buf,256,cndp);
- lineedt(buf);
- fputs(buf,prnp);
- fclose(cndp);
- return(0);
- }
- }
- }
- fclose(cndp);
- return(-2);
- }
- else return(-1);
- }
-
- /* ファイル情報編集 */
- void lineedt(buf)
- char *buf;
- {
- char *charp;
-
- if ( (charp = strchr(buf,'\n') ) != NULL) {
- *charp=NULL;
- *(charp-1)=NULL;
- }
- }
-