Ogni linguaggio di programmazione ha i suoi metodi per gestire le date, devi solo spulciarti la documentazione.
perchè si ripeta ogni 30 giorni, una volta ottenuta l'ultima data d'esecuzione del programma, fai soltanto un'addizione per sapere se sono passati 30 giorni da quella data.
ah, ovviamente il tuo programma non può fare i miracoli: se accendo il pc oggi e lo riaccendo il 18 giugno, l'azione che intendi fare verrà eseguita il 18 giugno appena accendo il pc, e non prima (ma con opportuni controlli puoi fare in modo che recuperi i mesi che ha perso: se sono passati 60 giorni esegui l'azione 2 volte, per dire, ma questo lo farebbe sempre il 18 giugno, non puoi "stregare" il pc per fare in modo che esegua operazioni anche da spento).