SPARC プログラミング List 1 Li st 2 68 : 69 : 70 : 72 : 78 : 79 : 80 : 83 : 84 : 85 : 86 : 87 : 88 : 89 : 92 : 94 : 95 : 96 : 97 : 98 : 99 : 100 : 101 : 102 : 103 : 104 : 105 : 106 : } 107 : 108 : static void 109 : do_cmd2(which) 1 10 : int which; 112 : i nt status : 113 : swi tch ()h i (h) { case 0 : i f (fork ( ) = 0 ) { 115 : exec l("/usr/b i n/texted i t". i t" , Gdbfnan. の : wa i t (&status) : 116 : 117 : break : 118 : 119 : 120 : } 121 : 122 : static void 123 : do_command ()h i ch) 124 : int which; 126 : i nt status ; 127 : switch(which) { 128 : case 0 : transvar ( ) : 129 : if(Gsnum ← 0 Ⅱ引 n 礪く = 0 llGkasan く = の { 130 : myerror ( " パラメータを指定して下さい " ) : 131 : 132 : bar Iase6 ( 引 j i kan, 引 paper, 引 prtdev) : 133 : break : 134 : case 1 : pitems() : 135 : break : 136 : 137 : , 138 : } 139 : 140 : static void 141 : do_cmd3(which) 142 : int which; 143 : { 144 : i nt status : switch(which) { 145 : 146 : case 0 : 147 : case 1 : 148 : case 2 : 149 : pitems2() : 150 : break ; 151 : 152 : ー 153 : } 11 CNJ っ 0 4- ・し 4 し 4 し、 ,. cd cd ・ 0 cd cd 0 1 ーワ 0 ワ 0 . 十し十レ 4 し十 ) 0. 0. ・ 0 Q) Cn a. a. 0. 0 0. 十レ一十し十レ十し 4 し十し・ー ・ー一 CO tn Ø 十レ し 0 0 1 ーっ 0 っ 0 - -0 ^ 0 っー 8 0 、 1 ワ CO -4 : -0 cD っー 8 0 ・ワ 0 っ 0 ・ 4 ・ - -0 ー 8 ソ 0 ワ 0 っ 0 ワ 0 っ朝っ 0 ワ 0 っ 0 ワ 0 っ 0 っ 3 っ朝ワ 0 っしり乙っ乙ワ】っ乙 0 乙ワ 3 ワ 0 ワ乙っ乙 else if( boxin(xpos,ypos,&Gbox[12J) ) { mmenuset (canvas, event. Gnumrow tb l, &Gsnumrow) : else if( boxin(xpos,ypos,&Gbox[13]) ) { mmenuset (canvas, event, Gketa tb l, &Gsketa) : else if( boxin(xpos,ypos,&Gbox[14]) ) { mmenuset (canvas, event, Gup_tb し &Gsup) : else if( boxin(xpos, ypos, &Gbox[15]) ) { mmenuset (canvas, event. Gco ⅱ nt_tb l, &Gsco ⅱ (t) : else if( boxin(xpos,ms,&Gbox[16]) ) { mmenuset (canvas, event, Gmoj i row_tb I, &Gsmoj i row) : else if( boxin(xpos,ypos. &G面X[17]) ) { mmenuset (canvas, event, Gj i kan tb l, &Gsj i kan) : else if( boxin(xpos, ypos,&Gbox[18]) ) { sel ect i on=mmenusel (canvas, event, Grenpr_tb I, &Gsrenpr) : if(seIection>=0) { do-command (sel ect i (n) : else if( boxin(xpos,ypos, & G 面 x [ 19 ] ) ) { se lect i on=mmenuse l(canvas, event, Gf ⅱ epr_tb I, &Gsf ⅱ epr) : if(seIection>=0) { do_cmd2(seIection) : else if( boxin(xpos, ypos, & G x [ 20 ] ) ) { mmenuset (canvas, event, Gd i rectpr_tb l, &Gsd i rectpr) : else if( u)xin(xpos.ypos,&Gbox[21]) ) { quitproc(base_frame) : strcpy(kasan, (char * ) anel-get-value(lkasan) strcpy(psamen, char * panel_get_value(lpsamen strcpy (pnum char * panel_get-value(lpnum) (uns i gned long) atol ( snum ) : Gsnum (unsigned long)atol( lnum ) : Glnum uns i gned long) at01 ( kasan) : Gkasan Gpsamen= uns i gned char atO i ( psamen) : (unsigned char atOi ( pnum) : Gpnum i f (Gkasan Gkasan ニ 1 し : i f (Gpsamen ー Gpsamen ニ 1 if(Gpnum Gpnum window_set(pframe,WIN SHOW, FA し SE, の : List MYPROC. SUN 1 : #def i ne EXTN extern 2 : #def i ne EXTERN extern 3 : 4 : #include く setjnp. h> 5 : 6 : #include く suntool/sunview. h> 7 : #include く suntool/canvas. h> 8 : 9 : # i nc lude ” smarknva. h ” 10 : #include ” dbarvar5. h ” 11 : #include "vartype. h" 12 : 13 : void do command() : 14 : void do-cmd2() : 15 : void dO - c 3 ( ) : 16 : 17 : VOid 18 : myproc (canvas, event) 19 : Canvas canvas; 20 : Event *event : 21 : { 22 : SHORT xpos, ypos, selection; 23 : Menu my_menu : 24 : SHORT i, var; 25 : 26 : xpos=event_x (event) : ypos=event-y(event) : 28 : if(event id(event)==MS RIGHT) 29 : 30 : mmenuset (canvas, event, Gprtdev_tb l, &Gsprtdev) : 33 : if( boxin(xpos,ypos,&Gbox[I]) ) { 34 : mmenuset (canvas, event, Gprtk i nd_tb I, &Gsprtk i (d) : 35 : 36 : else if( boxin(xpos. ypos, &Gbox[2]) ) { mmenuset(canvas, event, Gbarkind_tbl, &Gsbarkind) : 38 : 39 : else if( boxin(xpos,ypos,&GboxC3]) ) { 40 : mmenuset(canvas,event, GlatElkind_tbl, &GsIabel) : 42 : else if( boxin (xpos, ypos, &Gbox[4]) ) { 43 : mmenuset (canvas, event, Gpaper_tb I, &Gspaper) : 44 : 45 : else if( boxin(xpos,ypos,&Gbox[5]) ) { 46 : selection=mmenusel(canvas, event, Gfile tbl, &Gsfile) : if(seIection>=0){ 48 : do-cmd3 (sel ect i (n) : 49 : 50 : else if( boxin(xpos, ypos, &Gbox[6]) ) { 52 : mmenuset (canvas. event, GCOI unn_tb l, &GscoI umn) : 53 : 54 : else if( ypos, & Gbox [ 7 ] ) ) { 55 : mmenuset(canvas, event, Grow tbl, &Gsrow) : 56 : 57 : else if( ) { 58 : mmenuset (canvas, event, Gba i tb l, &Gsba i) : 59 : 60 : else if( boxin(xpos, ypos, &Gbox[9]) ) { mmenuset (canvas. event, Gbhe i ght_tb l. &Gsbhe i ght) : 62 : 63 : else if( *. Y8S・&G面X[10]) ) { 64 : mmenuset(canvas, event,Gleft_tbl, &GsIeft) : 65 : 66 : else if( boxin(xpos,ypos,&Gbox[II]) ) { mmenuset (canvas, event. Gka i gyo_tb l, &Gska i gyo) : 32 : List FlLLTOP2. SUN 1 : #def i ne EXTN extern 2 : #def i ne EXTERN extern 3 : 4 : #include く setjmp. h> 5 : 6 : #include く suntool/sunview. h> 7 : #include く suntool/canvas. h> 8 : 9 : # i ncl ude ” smarknva. h ” SPARC LT プログラミング 85
Li st 3 LISt 6 5 : #include く fcntl.h> 6 : #include く string. h> 7 : 8 : # i fdef MSC 9 : #include く stdlib. h 〉 10 : #include く præess. h> 11 : #endif 13 : #ifdef SYSV 14 : #include く sys/ioctl.h> 15 : 日し E *stdprn : 16 : void myerror() : 17 : char *mids(); 18 : #endif 20 : #include "prepmini. h" 21 : #include ” dbarvar5. h ” 22 : #include "barcode2. h ” 23 : #include "pldwn. h" 24 : #include ” lips. h ” 25 : #include "lipsvar. h" 26 : #include ” barvar. h" 28 : #ifdef PROTOTYPE 29 : #include "pldwnvar. h 30 : # i nc lude "barprot. h" 31 : #include ” lipsprot. h ” 32 : #end i f 33 : 34 : 35 : EXTERN short xhaba : 36 : EXTERN short yhaba : 37 : EXTERN short llhaba ; 38 : 39 : #def i ne _LABE し NUM 50 40 : 41 : bar Iase6 (I j i kan, lformat, prtdev) 42 : long 凵 i kan ・ 43 : long lformat : 44 : char *prtdev : 45 : { 46 : char num [ し ABE し NUM] [MOJ ILEN) : 47 : char IIIOJ it-LABE し NUM] CMOJILEN] : 48 : int handle, i : 49 : char jikan[10]; 50 : char format 10 ・ 51 : char number 20 52 : char pnum[20] : 53 : long ⅱ : 54 : POINT p; 55 : uns i gned long i nt samen=O : 56 : if(Gbarkind くニ 0 Ⅱ Gbarkind > 8 ) { 58 : Gbarkind ニ 1 59 : if(Gbai くニ 10 Ⅱ Gbai > 40 ) { 60 : Gba i 62 : 63 : xhaba ニ 40 64 : llhaba : 4 ・ 65 : Gdpi ニ 240 : 66 : 67 : #ifdef SPARCLT if((handle ニ open(prtdev, 0 WRON し Y ) ト 68 : myerror("can ・ t open printer Yn") : 69 : ioctl(handle, RAW) : if((stdprn ニ fdopen(handle, "w") ) = NU しい { myerror("can ・ t fopen printer Yn") : 73 : 75 : #endif 76 : 77 : #ifdef PCUX V if((handle : open("/dev/lp", 0 WRON し Y ) ) = myerror("can ・ t open printer Yn") : 80 : ioctl(handle, し円 OCTHR) : if((stdprn : fdopen(handle, "w") ) = NUL し ) { 82 : myerror("can ・ t fopen printer Yn") : 83 : 84 : 85 : #endif 86 : 87 : 88 : 89 : 90 : 92 : 93 : 94 : 95 : 96 : 98 : 99 : 100 : 101 : 102 : 103 : 104 : 105 : 106 : 107 : 108 : 10 : #include ” dbarvar5. h" 12 : VOid 13 : f i Ⅱ t 叩 2 (canvas_name) 14 : Canvas canvas_name : 16 : PiXWin *pw; 17 : char *homeptr; 18 : char bairitsu[50]; 19 : char barkind[50] : 20 : pw = canvas_pixwin(canvas_name) : 22 : selboxdp(pw, &Gbox[0 , Gsprtdev, " プリンタデパイス ". Gprtdev_tbl) : 23 : 24 : selboxdp(pw, &Gbox[l . Gsprtkind, " プリンタの種類 " , Gprtkind_tbl) : 25 : seIboxdp(pw,&Gbox[2 ,Gsbarkind,"JS—コードの種 M",Gbarkind_tbl); 26 : selboxdp(pw, &Gbox 3 , Gslabel " ラベルの種類 ",Glabelkind_tbl); 27 : selboxdp(pw, &Gbox 4 , Gspaper , ”用紙の種類 ",Gpaper tbl); ・ 28 : selboxdp(pw, &Gbox 5 , GsfiIe " ファイル指定 ",Gfile_€bl); 29 : selboxdp(pw. &Gbox 6 , Gscolumn " 列数 ",Gcolumn_tbl) : 30 : se lboxdp (pw. &GbOX 7 , " 行数 ",Grow tbl); , Gsrow " 横幅 ",Gbai:tbl); selboxdp(pw, &Gbox 8 . Gsbai 32 : selboxdp(pw, &GbOX 9 , Gsbheight " 縦幅” ,Gbheight_tbl) : 33 : selboxdp(pw, &GbOX 10 , GsIeft ," 左余白 ",Gleft_tbl); 34 : selboxdp(pw, &GbOX 11 , Gskaigyo , ”行間 ". Gkaigyo_tbl); 35 : selboxdp(pw, &GbOX 12 , Gsnumrow " 数字行 " , Gnumrow tbl) : , " 桁数 ",Gketa_tbl) : 36 : selboxdp(pw, &Gbox 13 , Gsketa selboxdp(pw. &Gbox 14 . Gsup ," 上余白 ",Gup-tbI) : 38 : selboxdp(pw, &Gbox 15 ,Gscolint ,"パー間 ",GcoIint_tbl); 39 : selboxdp(pw, &GbOX 16 , Gsmoj i row ”文字行 ". Gmojirow tbl); ," 字間隔 ". Gjikan_t61); 40 : selboxdp(pw, &GbOX 17 , Gsj ikan selboxdp(pw. &Gbox 18 , Gsrenpr . " 連続番号印刷 " . Grenpr tb l) : 42 : selboxdp(pw, &GbOX 19 . Gsfilepr " ファイル印刷 ". Gf ⅱ ep 己 tbl) : 43 : se lboxdp (pw, &Gbox 20 ] , Gsd i rectpr, ”問合せ ",Gdirectpr_tbl) : 44 : dbutton(pw, Gbox [ 21 ]. xl , Gtm [ 21 ]. yl, " 終了 " ) ; 45 : 46 : List SELBOXDP. SUN . #define EXTN extern 2 : 3 : #include く suntool/sunview. h> 4 : #include く suntool/canvas. h> 5 : 6 : #include "vartype. h" 7 : #include ” smarknva. h ” 8 : 9 : selboxdp(pw, boxn, selnum, title, str) 10 : Pixwin *pw; 11 : struct GbOXY *boxn; 12 : SHORT selnum; 14 = UCHAR 0 ロ ESMOJILEN ・ 16 : SHORT if( strlen(str[selnum]) ) { dboxstr(pw, boxn->xl, boxn->yl, title, str[selnum] 20 : } LiSt DBOXSTR. SUN 1 : #def i ne EX'I'N extern 2 : 3 : #include く suntool/sunview. h> 4 : #inglude く suntool/canvas. h> 5 : 6 : #include "smarknva. h ” 7 : 8 : dboxstr(pw, x, y, strl, str2) 9 : PlXWln *pw; 10 : int x; int y: 12 : Char *strl : 13 : Char *Str2 : 15 : int boxlength; drawbox(pw, x, y + 5 , str2) : 17 : pw-text(pw, x, y, 円 X_NOT( 円 X_SRC), N 乢し . strl) : 18 : } 0 ・ー O tn 0 E , 0 編し 1 ー E く 0 《 0 X C.21 よ 一十しい 0 一 : ー C 十し NC 0 0 0 ・ー cd ・し + ) 本し 0 よー List BARLASE6. SUN . #def i ne EXTERN extern 2 : 3 : #include "config. h ” 4 : #include く stdio. h> 86 C MAGAZINE 1991 7
List SMARKN5. SUN 63 : { 71 : * * / 91 : * * / 84 List 1 209 : 208 : 207 : 201 : 200 : { 199 ・ 198 : 197 : 196 : } 195 : 194 : 193 : 192 : 191 : 190 : 189 : 188 : 187 : 186 : 185 : 184 : 183 : 182 : 181 : 180 : 179 : 178 : 177 : 176 : 174 : 173 : 172 : 170 : 169 : 168 : 167 : 166 : 165 : 164 : 163 : 162 : 161 : 160 : 159 : 158 : 157 : 156 : 155 : 154 : 153 : 152 : 150 : 149 : 148 : 146 : 145 : } 144 : 143 : 142 : 141 : 140 : 139 : 138 : 137 : 136 : 135 : 134 : 133 : 132 : 131 : 130 : 129 : 128 : 127 : 126 : 125 : 124 : 123 : 122 : 121 : 120 : 118 : 117 : 116 : 115 : 1 13 : 112 : 110 : 109 : 108 : 107 : 106 : 105 : = ⅵ ndow-create (pframe, PANEL, 0 ) : panel 3 : 8 : 12 : 22 : 23 : 27 : 29 : 33 : 34 : 35 : 36 : 37 : 38 : 40 : 43 : 44 : 47 : 48 : 49 : 50 : 59 : 60 : 62 : 64 : 65 : 68 : 69 : 74 : 75 : 80 : 82 : 84 : 85 : 86 : 87 : 88 : 89 : 90 : 92 : 93 : 94 : 95 : 96 : 99 : Wind0H ttysw; 46 : PaneI pane12: 45 : Panel pane l, Frame pframe2 : Frame pframe : 42 : static void done_proc2() : 41 : stat i c VO i d done_proc ( ) : 39 : # i ncl ude ” smarknva. h" #include く suntool/tty. h> #include く suntool/panel. h> # i ncl ude く suntoo l/canvas. h> #include く suntool/sunview. h> 32 : EXTERN short Ⅱ haba : 31 : EXT ERN short yhaba : 30 : EXTERN short xhaba : 28 : #include ” barvar. h ” #include "lipsvar. h" 26 : #include "lips. h" 25 : #include "pldwn. h" 24 : # i nc lude ” barcode2. ド #include ” dbarvar5. h ” #include "prepmini. h" 1 : #define EXTN 2 : #define EXTERN 4 : #include "config. h" 5 : #include く stdio. h> 6 : #include く fcntl.h> 7 : #include く string. h> #include く setjmp. h> 9 : #include く signal.h> 10 : #include く sys/ioctl.h> 11 : 日し E *stdprn ・ VO i d myerror ( ) : 13 : char *mids() : 15 : void , 。 t 。に 3 16 : VOid 叩 _proc() : 17 : void home_proc() : 18 : void do command() : 19 : void do-cmd2() ; 20 : void dO cmd3(); ー snum 日 num lpnum ー panel create_ i tem (pane l, PANE し _TEXT, PANEWITEM_X, ATTÜROW(OB: PANE し」 TEM Y, PANE し LABEC STRING, " 開始番号 PANE し :VALUCDI SP し AY_ し ENGTH, 55 , - pane l_create- i tem (pane l, PANE し _TEXT, ATTR_CO し (の . PANE し _ITEM_X, ATTR ROW ( 1 ), PANEL ITEM Y, PANE し :LABEC_STRING, " 終了番号 PANEL_VALUE_DI SPLAY_ し ENGTH, 55 を lkasan - panel_create-item(panel, PANEL TEXT, ATTR CO し ( の . PANE し _ITEM X, PANEL_ITEM-y, ATTÜROW ( 2 ) , PANEL_LABEC_STRING, " 増分 PANE し _VA し UE_DI SP し AY_ し ENGTH, 55 , lpsamen= pane l_create_ i tem (pane l, PANE し _TEXT, ATTÜROW ( 3 : PANE し ITEM X, PANE し -ITEM Y, PANE し :LABEC_STRING, " 同番号回数 PANE し _VALUE_DI SP し AY_ し ENGTH, 55 , : panel_create item(panel, PANEL_TEXT, PANE し _ITEM X, ATTR_CO し ( 0 ) . ATTR ROW ( 4 ) , PANE し ITEM Y, PANELZLABEC_STRING, " 印刷回数 PANE し _VA し UE_DI SP し AY_ し ENGTH, 55 , 147 : pitems2() pane l-create_ i tem (pane l. PANEL_BUTTON, PANEL_LABE し _IMAGE, panel_button_image(panel, "DONE", 5 , の . PAN E し _NOT IFY_PROC , done_proc, window fit height(panel) : window-set(pframe, WIN-SHOW. TRUE, 0 ) : Panel Panel Panel 51 : Panel 52 : Panel 53 : Panel 54 : Panel 55 : Panel 56 : Panel 57 : Panel 58 : Panel i tem i tem i tem i tem i tem i tem i tem item i tem i tem main(argc, Char int ー snum 第 Ⅱ num : lkasan; lprtdev 1 : Iprtdev2 : Iprtdev3 : Iprtdev4 : ldbfnam : lpmfnam : lpsamen : lpnum; argv) argc : **argv : Canvas contro ー i ndOW : PiXWin *pw; setjmp (Gretback の : signaI(SIGINT, sctrlc) : signal (SIGHUP. sctrlc) : signal (SIGTSTP, sctrlc) : initvars() : strcpy ( 引 prtdev, "/dev/ttya" ) : base_frame ニ window_create()U しし FRAME, FRAME_LABE し "markn WS*** MARKN WS verl . 0 * * * " , の : control w i ndow = ⅵ ndow create (base_frame, CANVAS. 引 N_EV ENT PROC, iyproc, N 』 GH ↑ . 200 , pitems() : pitems2() : ttysw = window_create(base_frame, TTY, pframe2= w i ndow-create (base_frame, FRAME, の ; panel 2 = ⅵ ndow-create (pframe2, PANE しの : lprtdev 1 ニ pane l_create_ i tem (pane , PANEL TEXT, PANE し」 TEM X, ATTR_CO し (0) . ATTR ROW( の , PANEL_ITEM Y, PANE し _LABEC_STRING, " ラリンタデバイス 1 PANE しーVAし肥ー田 SP し AY_ し ENGTH. 55 を Iprtdev2= pane l_c reate i tem (panel 2 , PANEL TEXT, ATTR_CO し (0), PANE し _ITEM_X, ATTR ROW(I), PANE し _ITEM Y, PANE し一し ABEC_STRING, " ラ・リンタデバイス 2 PANE し _VA し UE_DISP し AY_ し ENGTH. 55 , Iprtdev3= pane l-create- i ten (pane . PANE し _TEXT. ATTR_CO し (0), PANE し _ITEM_X, PANEL_ITEM Y, ATTR_ROW ( 2 ). PANE しし ABEC STRING," プリンタデパイス 3 PANEIZVALUCDISP し AY_ し ENGTH. 55. Iprtdev4= pane l_create_ i tem (pane . PANE し _TEXT, ATTR_COL ( 0 ) . PANE し _ITEM_X, ATTR ROW (3), PANEL_ITEM_Y, PANE し一し ABEL STRING. " プリンタデバイス 4 PANE し _VALUE_DISP し AY_LENGTH, 55 , ldbfnam = pane l_create_ i tem (pane , PANE し _TEXT, ATTR_CO し (0), PANE し _ITEM_X, ATTR_ROW(4), PANE し _ITEM Y, PANE し - し ABEC_STRING, " データファイル名 PANEL_VA し UE_DI SP し AY_ し ENGTH, 55 , lpmfnam = paneI_create_item(pane12. PANE し _TEXT, PANE し _ITEM_X, ATTR CO し ( 0 ). ATTÜROW(5), PANE し _ITEM Y, PANE し _LABE し STR G , " 六ラメータファイル名 : " PANE し _VALUE_-DI SP し AY_LENGTH. 55 , pane l-create i tem (panel 2 , PANEL BUTTON. PANEC_ し ABEL_IMAGE, panei_button_image(panel, "tnIE". 5.0 ). PANE し _NOTIFY_PRW, done_proc2, window fit height(pane12) : window:set(pframe2, WIN-SHOW. TRUE. の : Ⅲ N_ROWS, 20 第 Ⅲ N_VERTI CA し _SCRO しし BAR. scro Ⅱ bar_create ( の , ⅵ ndow-set (contro l_wi ndow, N_I GNORE_ 円 CK_EVENT. Ⅵ N_UP_EVENTS, の : ⅵ ndow_ma i n_100P (base_frame) : fi llt 叩 2(control_window) : ・ pitems() exit(0); 1 圓・ 101 102 : 103 : 104 : pframe= w i ndow_create (base_frame. FRAME. の : static void ・ done_proc ( ) int status; 202 : char snum 256 203 : char lnum 256 204 : char kasan[256] : 205 : char psamen [ 256 ] : 206 : char pnum [ 256 ] : strcpy(snum . (char *)panel_get_value(lsnum) strcpy(lnum . (char *)panel get_value(llnum) C MAGAZINE 1991 7