Minitab : Definisi Global Macro dan Local Macro


Pendahuluan

Terdapat 3 macam macro, yaitu
Global macro : macro yang sederhana
Local macro : bentuk macro yang lebih rumit
Execs : bentuk macro yang lama
Persamaan Global dan Local macro, keduanya :
Bisa menggunakan Minitab Command
Bisa menggunakan Control Statement
Bisa memanggil macro lain
Perbedaan Global dan Local macro
Global macro :
§ Lebih sederhana dan lebih mudah
§ Bekerja langsung pada worksheet yang dikerjakan
Local macro:
§ Lebih kompleks dan lebih sulit
§ Lebih powerful dan fleksibel
§ Bisa menggunakan argument, subcommand dan local variable
Terdapat dua macam worksheet, yaitu :
Global worksheet : worksheet yang biasa digunakan di Minitab
Local worksheet : terbuat ketika memanggil macro dan terhapus dari memory komputer ketika macro selesai. Local worksheet tidak tampak di data window

GLOBAL MACRO

Struktur Simple macro
GMACRO tanda dimulainya global macro
Template nama dari macro
Body of the macro isi macro
ENDMACRO tanda berakhirnya macro

Template
Template dapat berisi huruf, angka atau underscore ( _ ), tapi harus dimulai dengan huruf. Template bisa merupakan huruf besar, huruf kecil atau campuran, Minitab mengabaikannya ketika macro dipanggil. Nama file macro tidak harus sama dengan template macro. Contoh berikut adalah kombinasi dari nama file macro dan nama template macro yang sah

Template Nama file Dipanggil dengan
Mymacro MYMACRO.MAC %MYMACRO
Analyze TEST.MAC %TEST
Analyze2 TEST2.TXT %TEST2.TXT
Body of the macro
Body of the macro berisi
Minitab command
Control statement
Macro statement (seperti IF, THEN, PAUSE, CALL dan GOTO)
Invocation of other global macro

Contoh simple macro
GMACRO
Analyze
NAME C1=’Yield’ C2=’Chem’ &
C3=’Chem2’ C5=’Ln.Yield’
PRINT C1-C3
LET C5=LOGE(‘Yield’)
REGRESS C5 2 C1 C2
ENDMACRO
Note: Jika ingin melanjutkan macro statement ke baris lain, akhiri baris pertama dengan symbol &

Langkah-langkah untuk membuat macro :
Gunakan text editor untuk menulis macro
Simpan sebagai text file only dengan ekstensi MAC
Simpan di Macros Subdirectory dari Main Minitab directory

Membuat macro dari Minitab Session
Jalankan command secara interaktif di Mnitab session
Pilih Window>History. Window ini akan menampilkan command terbaru yang telah dijalankan
Copy command yang ingin dimasukkan dalam macro
Paste di aplikasi word processing
Lakukan perubahan yang diperlukan, tambahkan
Ø GMACRO di baris paling atas
Ø Template di baris kedua
Ø ENDMACRO di baris paling bawah
Simpan dengan extensi Mac di Macros subdirectory yang terletak di Main Minitab directory
Note :File macro dapat disimpan dengan ekstensi apapun dan di directory manapun, tapi ketika memanggil macro harus lengkap
Misal : %C: \work\mymacro

Untuk memanggil (invoking ) macro gunakan :
%namafilemacro : untuk memanggil file dengan ekstensi MAC di directory macros
%namafilemacro.ekstensi : untuk memanggil file dengan ekstensi selain MAC di directory macros
%dir\subdir\namafile : untuk memanggil file dengan ekstensi MAC di directory selain macros
%dir\subdir\namafile.ekstensi : untuk memanggil file dengan ekstensi selain MAC di directory selain macros

Menambah Komentar pada Macro
Anda dapat menambah komentar pada macro dengan menggunakan symbol komentar # dan perintah NOTE.
Simbol # digunakan untuk menambah komentar yang tidak ditampilkan di session window. Letakkan symbol # di baris manapun dalam macro untuk mengatakan pada Minitab agar mengabaikan text di belakang symbol # dalam baris tersebut. Teks setelah symbol # tidak akan ditampilkan di session window ketika macro dijalankan.
Contoh:
# This is a comment on its own line
PRINT C1-C3 # This is a comment

Perintah NOTE digunakan untuk menambah komentar yang ditampilkan dalam session window.
Letakkan perintah NOTE di awal baris. Semua Text pada baris tersebut akan diabaikan oleh prosesor macro, tapi teks tersebut akan ditampilkan di session window ketika macro dijalankan. Untuk menampilkan baris kosong, masukkan baris yang hanya berisi perintah NOTE.

Contoh penggunaan NOTE
Perintah dalam macro
NOTE Here come the data
NOTE
PRINT C1-C3

Hasil di session window

Here come the data

Data Display
Row Yield Chem1 Chem2
1 11.28 87 1.83
2 8.44 61 25.42
3 13.19 59 28.64

Menemukan masalah dalam macro
Berikut adalah masalah umum yang sering terjadi apabila macro tidak berjalan sesuai dengan harapan
§ Syntax yang digunakan tidak benar, missal tidak diawali dengan GMACRO dan tidak diakhiri dengan ENDMACRO
§ Penulisan Minitab Command tidak benar atau yang tersedia adalah nama kolom padahal perintah tersebut memerlukan konstanta
§ Macro menggunakan perintah yang cara kerjanya berbeda bila dieksekusi di interactive Minitab

LOCAL MACRO

Struktur local macro
MACRO Awal dimulainya local macro
Template Nama macro
Declaration statement Pendeklarasian statement
Body of the macro Isi dari macro
ENDMACRO Akhir dari local macro

Menulis template
Template mencakup commandname, subcommandname dan argument dengan syntax sebagai berikut :
Commandname argument1 argument2;
Subcommandname argument.
Commandname dan subcommandname dapat berisi huruf, angka dan karakter underscore, maksimum 8 karakter
Argument harus mempunyai nama variable yang legal
Aturan penamaan variable
– Maksimum terdiri dari 8 karakter
– Dapat berisi huruf, angka dan underscore, tapi harus diawali dengan huruf
– Bisa huruf kapital, kecil atau campuran
– Tidak boleh sama dengan nama command atau subcommand Minitab

Pendeklarasian statement
Syntax
MCOLUMN variabel1 variabel2 …(setiap variable adalah kolom)
MCONSTANT variabel1 variabel2 (setiap variable adl konst)
MMATRIX variabel1 variabel2 (setiap variable adl matrix)
Variable hanya bisa dideklarasikan sekali
Variabel yang dideklarasikan harus mempunyai nama yang legal

Memanggil Local Macro
%namafile argument1 argument2
Argument tak bernama, tanpa petik. Misal : %TRIM C1 K2
Argument bernama, dengan petik satu. Misal : %TRIM ‘sales’ ‘newmean’
Text string seperti title atau namafile, dengan petik 2. Misal
%TRIM C1 K2;
TITLE “Result”;
STOREIN “OUTPUT.TXT”.
Jika macro mempunyai subcommand, gunakan titik koma ( 😉 di setiap akhir baris dan titik ( . ) pada baris paling akhir
Apa yang dapat dilakukan local macro?
Dapat menggunakan argument
Dapat menggunakan subcommand
Dapat menggunakan temporary “local” variable
CONTROLLING MACRO FLOW
Control Statement akan membuat macro anda lebih fleksibel dan lebih powerfull karena statement ini akan membuat anda bisa mengontrol sekelompok perintah, menjalankan perintah dengan kondisi tertentu, mengulang perintah dan memanggil macro lain

IF, ELSEIF, ELSE, ENDIF
Perintah ini digunakan untuk mengeksekusi blok perintah yang berbeda tergantung pada logical condition
Syntax:
IF logical ekspression
Block of Minitab and Macro command
ELSEIF logical ekspression
Block of Minitab and Macro command
ELSE
Block of Minitab and Macro command
ENDIF
Boolean operator yang dapat digunakan dalam logical expression antara lain :
= (EQ) & (AND)
~= (NE) | (OR)
< (LT) ~ (NOT)
> (GT)
<= (LE)
>= (GE)

Umumnya logical ekspression mengevaluasi bilangan tunggal. Jika bilangan tersebut bernilai 0, maka blok perintah akan dilewati dan bila bernilai 1, blok perintah akan dieksekusi. Jika logical ekspression dikenakan pada kolom, jika semua isi dari kolom tersebut bernilai 0 ekspresi dianggap salah (false) selainnya dianggap benar. Untuk control statement IF, ELSEIF, ELSE, ENDIF dapat digunakan sampai 50 statemen elseif.
Contoh penggunaan IF dalam Macro
LET K1 = COUNT (‘Yield’)
IF K1 < 3
NOTE Not enough observations
ELSEIF K1 = 3
NOTE Add one observation
ELSE
REGRESS C5 2 C1 C2
ENDIF

DO, ENDDO
Perintah ini digunakan untuk looping (mengulang) blok perintah
Syntax :
DO k=list of number
Block of Minitab and Macro command
ENDDO
Nilai K diset sama dengan angka pertama dalam list, kemudian blok perintah dieksekusi. Ketika minitab mencapai ENDDO, maka K diset sama dengan angka berikutnya dalam list dan blok perintah dieksekusi lagi. Hal ini akan diulang sampai semua angka dalam list digunakan atau jika terdapat perintah keluar dari looping DO, seperti perintah BREAK, GOTO, RETURN, EXIT

List of number bias eksplisit atau konstanta yang disimpan. Misal :
K=1:10 ® 1,2,…,10
K=1:1.8/0.2 ® 1, 1.2, 1.4, 1.6, 1.8
Contoh penggunaan DO, ENDDO
DO k1 = 1:10
LET C1(K1) = ‘*’
LET C2(K1) = ‘*’
ENDDO

Contoh dalam local macro

MACRO
MOVAVE X Y
#
# Menghitung moving average sederhana dari X dan disimpan di Y
#
MCONSTANT N I
MCOLUMN X Y
LET N = COUNT (X)
LET Y(1) = ‘*’
LET Y(2) = ‘*’
DO I = 3 : n
LET Y(I) = (X(I) + X(I-1) + X(I-2))/3
ENDDO
ENDMACRO

WHILE, ENDWHILE
Perintah ini digunakan untuk looping (mengulang) blok perintah selama logical ekspression benar
Syntax
WHILE logical expression
Block of Minitab and Macro command
ENDWHILE
Contoh :
MACRO
HITUNG X P
MCOLUMN X
MCONSTANT P N C
LET N=COUNT(X)
LET P=0
LET C=1
WHILE C<=N
IF X(C)>=10
P=P+1
ENDIF
C=C+1
ENDWHILE
ENDMACRO

NEXT
Perintah ini digunakan untuk transfer control dari looping DO atau WHILE kembali ke awal blok. Untuk DO, loop variable akan berubah ke nilai berikutnya dalam list
Contoh :
GMACRO
FIVES
NAME K90=’N’ K91=’T’
LET ‘N’=COUNT(‘X’)
DO ‘T’=1:’N’
IF ‘X’(‘T’)<=5
NEXT
ELSE
LET ‘X’(‘T’)=5
ENDIF
ENDDO
ENDMACRO

BREAK
Perintah ini digunakan untuk transfer control dari looping DO atau WHILE ke perintah setelah END dari loop
Contoh
GMACRO
NOMISS
LET K90=COUNT(‘X’)
DO K91=1:K90
IF ‘X’(K91)=’*’
BREAK
ENDIF
ENDDO
DELETE K91:K90 ‘X’
ENDMACRO

GOTO, MLABEL
Perintah ini digunakan untuk pindah ke baris manapun dalam macro. GOTO dicocokkan dengan MLABEL yang mempunyai angka yang sama. Angka tersebut tidak boleh variable dan harus integer dari 1 sampai dengan 8 digit
Contoh
GMACRO
NOMISS
LET K90=COUNT(‘X’)
DO K91=1:K90
IF ‘X’(K91)=’*’
GOTO 5
ENDIF
ENDDO
MLABEL 5
DELETE K91:K90 ‘X’
ENDMACRO

Memanggil macro dari dalam macro dalam 1 file
Dalam 1 file dapat terdiri dari beberapa macro. Setiap macro mengikuti struktur seperti biasa dan harus mempunyai template. Ketika macro dipanggil maka macro pertama yang dijalankan, macro berikutnya adalah subrutin yang dipanggil dengan perintah CALL. Sedangkan RETURN (optional) digunakan untuk kembali ke macro pemanggil yaitu ke statement setelah perintah CALL. Jika RETURN tidak adadalam macro, maka setelah dieksekusi control akan kembali ke macro pemanggil.
Note : Dalam satu file dapat berisi beberapa global macro atau beberapa local macro tapi tidak dapat berisi campuran global dan local macro.

CALL template RETURN
Dalam 1 file dapat terdiri dari beberapa macro. CALL adalah perintah yang digunakan untuk memanggil macro lain dalam 1 file. Sedangkan RETURN (optional) digunakan untuk kembali ke macro utama yaitu ke statement setelah perintah CALL.
Note : Dalam satu file dapat berisi beberapa global macro atau beberapa local macro tapi tidak dapat berisi campuran global dan local macro.

Syntax :
CALL template macro ( untuk local macro diikuti argument dan subcommand yang sesuai)
Contoh :
Analyze3.MAC (nama file)
GMACRO
ANALYZE3
#
NOTE Would you like all data printed?
YESNO K80
#Jika user mengetik “YES” maka K80=1, jika “TIDAK” maka K80=0
LET K90=COUNT(C1)
IF K90<5
CALL TOOSMALL
ELSE
CALL OK
ENDIF
#
IF K80=1
NOTE Inilah datanya
PRINT C1-C3
ENDIF
ENDMACRO
#
#
GMACRO
TOOSMALL
NOTE Kumpulan data memiliki observasi yang kurang dari 5
NOTE Tidak akan dilakukan analisis apa pun
ENDMACRO
#
#
GMACRO
OK
NAME C1=’Yield’ C2=’Chem1’ C3=’Chem2’ C5=’Ln.Yield’
DESCRIBE C1-C3
LET C5=LOGE(‘Yield’)
REGRESS C5 2 C2 C3
IF K80=1
RETURN
ENDIF
NOTE Analisis telah dilakukan tapi data tidak dicetak (berdasarkan perintah)
ENDMACRO

EXIT
Dalam global atau local macro, perintah EXIT akan mentransfer control kembali ke interaktif Minitab
Dalam Exec, perintah EXIT akan menutup Minitab
Contoh :
GMACRO
NOMISS
LET K90=COUNT(‘X’)
DO K91=1:K90
IF ‘X’(K91)=’*’
BREAK
ENDIF
IF K91=K90
NOTE Tidak ada missing observations dalam X
EXIT
ENDIF
ENDDO
ENDMACRO

MEMANGGIL MACRO DARI DALAM MACRO DARI FILE YANG BERBEDA
Tipe macro yang dapat dipanggil
Global macro dapat memnaggil
Local macro dapat memanggil
Exec dapat memanggil
Pemanggilan macro dari macro menggunakan cara yang sama dengan pemanggilan macro dari Minitab, yaitu %namafile. Misal
%TRIM
%’C:\MYWORK\TRIM’
Jika memanggil local macro, masukkan argumen dan subcommand yang sesuai
Contoh :
Analyze2.Mac
GMACRO
ANALYZE2
#
LET K90=COUNT(C1)
IF K90<5
% TOOSMALL
ELSE
% OK
ENDIF
ENDMACRO

TooSmall.mac
GMACRO
TOOSMALL
NOTE Kumpulan data memiliki observasi yang kurang dari 5
NOTE Tidak akan dilakukan analisis apa pun
ENDMACRO

Ok.Mac
GMACRO
OK
#
NAME C1=’Yield’ C2=’Chem1’ C3=’Chem2’ C5=’Ln.Yield’
PRINT C1-C3
DESCRIBE C1-C3
LET C5=LOGE(‘Yield’)
REGRESS C5 2 C2 C3
ENDMACRO

BEBERAPA CONTOH MACRO

Macro untuk mengurutkan data
MACRO
URUT X
MCOLUMN X
MCONSTANT N i j temp
LET N=COUNT(X)
DO i=1:n-1
DO j=i+1:N
IF X(i)>X(j)
temp=X(j)
X(j)=X(i)
X(i)=temp
ENDIF
ENDDO
ENDDO
ENDMACRO

Macro untuk mencari Median
MACRO
MEDIAN X
MCOLUMN X
MCONSTANT I N J TEMP K MED
LET N=COUNT(X)
DO i=1:n-1
DO j=i+1:N
IF X(i)>X(j)
temp=X(j)
X(j)=X(i)
X(i)=temp
ENDIF
ENDDO
ENDDO
LET K=N/2
IF N MOD 2=0
LET MED=(X(K)+X(K+1))/2
ELSE
LET MED=X(K+1)
ENDIF
ENDMACRO

MEMANAGE INPUT DAN OUTPUT DALAM MACRO
Berkomunikasi dengan user macro
Dalam kebanyakan kasus, jika anda menginginkan informasi dari user maka akan dibuatlah local macro sehingga user dapat memasukkan informasi tersebut melalui argumen. Namun terkadang kita juga perlu beinteaksi langsung dengan user. Minitab menyediakan 4 alat komunikasi tersebut:
Perintah NOTE, option TERMINAL pada READ, SET, dan INSERT, perintah YESNO, dan statemenPAUSE.

NOTE
Perintah NOTE digunakan untuk menambah komentar yang ditampilkan dalam session window.
Letakkan perintah NOTE di awal baris. Semua Text pada baris tersebut akan diabaikan oleh prosesor macro, tapi teks tersebut akan ditampilkan di session window ketika macro dijalankan. Untuk menampilkan baris kosong, masukkan baris yang hanya berisi perintah NOTE.

Penggunaan Write
Write biasanya menulis kolom data ke file. Write dengan special fle name TERMINAL dapat mencetak isi dari kolom di session windows. WRITE “TERMINAL” berguna untuk menampilkan pesan yang dapat mengatakan pada user hasil dari sebuah aksi. Contoh :
GMACRO
COUNTER
LET C100=”COLUMN HAS”
LET C101=COUNT(C1)
LET C102=”OBSERVATIONS”
WRITE ‘TERMINAL’ C100-C102
ENDMACRO
Jika macro dijalankan dan C1 berisi lima nilai, maka session windows menampilkan
COLUMN HAS 5 OBSERVATIONS

Prompting a User for Information
READ, SET, and INSERT mempunyai fitur khusus yang memungkkinkan kita bertanya pada user dan menggunakan jawaban dari user dalam macro. Macro akan berhenti untuk mendapatkan input dari user jika macro menggunakan READ, SET, or INSERT dengan subcommand FILE dengan nama file TERMINAL. TERMINAL akan mengatakan pada Minitab untuk menunggu input dari keyboard.
Syntax

READ C…C FILE “TERMINAL”                  or SET C FILE “TERMINAL”                  or INSERT data [between K and K] of C…C FILE “TERMINAL”
READ, SET , and INSERT have other subcommands.

Note: Jika digunakan READ, SET, atau INSERT dengan subcommand FILE ” TERMINAL” sementara command language sedang off di Session window (dengan menu command Editor > Disable Command Language), pesan error akan tampak dan macro akan berhenti.
GMACRO
ANALYZE4
#
NOTE How many observations do you have this month?
SET C90;
FILE “TERMINAL”;
NOBS = 1.
COPY C90 K90
IF K90 < 5
NOTE Data set has fewer than 5 observations.
NOTE No analysis will be done. Here are the data.
PRINT C1-C3
ELSE
LET C5 = LOGE(C1)
REGRESS C5 2 C2 C3
ENDIF
ENDMACRO
Bila anda mengetik %ANALYZE4, Minitab menampilkan , “How many observations do you have this month?” dan berhenti, menunggu respon dari user. Setelah user mengetti sebuah angka an menekan r, angka tersebut akan din\masukkan ke C90.

Subcommand NOBS mengatakan pada Minitab banyaknyanilai yang diharapkan dari user. Jika anda mengabakan NOBS, user harus mengetik END sebagai tanda dari akhir input data sebelum macro melanjutkan eksekusi. Jika anda memasukkan NOBS, macro akan melanjutkan eksekusi setelah user memasukkan banyaknya observasi yang diharapkan (dalam contoh kita, 1 angka)
Macro melanjutkan eksekusi dengan menggunakan nilai C90 yang dimasukkan oleh user Berikut ini yang tampak di layar:
Executing from file: ANALYZE4.MAC
How many observations do you have this month?
DATA> 4 (diketik oleh user)
Data set has fewer than 5 observations.
No analysis will be done. Here are the data.

Data Display

ROW C1 C2 C3
1 44.0 5 8
2 43.5 5 8
3 46.0 5 8
4 39.0 5 12

Karena anda hanya bisa menggunakan perintah READ, SET, or INSERT pada kolom, dalam contoh kita, konstana diletakkan di kolom terlebih dulu kemudian copi ke K90.

Mendapatkan jawaban Yes atau No dari User
Syntax
YESNO K
YESNO bertanya pada user apakah blok perintah dieksekusi atau tidak
YESNO membaca respon “Yes” atau “No” dari terminal dan merubah nilai dari argumen dalam hal ini. YESNO mengeset K = 1 bila user mengetik “Yes” dan K = 0 bila user merespon “No.” YESNO hanya mengambil satu argumen dan harus merupakan konstanta yang disimpan.
Respon apapun yang berawal Y (huruf besar atau kecil) diinterpretasikan sebagai Yes; Respon apapun yang berawal N (huruf besar atau kecil) diinterpretasikan sebagai No. Bila ada jawaban lain user akan menerima pesan “Please answer Yes or No” dan diberi kesempatan untuk memberi jawaban yang dapat diterima. Jika valid response tidak diperoleh setelah 5 kali, diasumsikan user memberi jawaban “No” .

YESNO tidak menampilkan prompt; hanya membaca respon. Pemrogram harus menggunakan perintah Note untuk menampilkan pesan untuk mendapatkan respon

Note: Jika digunakan YESNO sementara command language sedang off di Session window (dengan menu command Editor > Disable Command Language), pesan error akan tampak dan macro akan berhenti.

PAUSE, RESUME
PAUSE adalah perintah untuk mengalihkan control dari macro ke keyboard. Sedangkan RESUME (R) adalah perintah untuk mengembalikan control ke macro. Dalam PAUSE mode :
Worksheet yang dapat diakses hanya worksheet local (jika PAUSE berada dalam local macro)
Dapat mengetik Minitab command
Tidak dapat CALL macro dalam file yang sama, memanggil macro dari macro file lain atau menggunakan control statement.

Tinggalkan komentar