home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FreeWare Collection 2
/
FreeSoftwareCollection2pd199x-jp.img
/
ms_dos
/
setprn
/
setprn.c
next >
Wrap
Text File
|
1990-06-14
|
5KB
|
172 lines
/*******************************/
/* ファイル名: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;
}
}