| 
									
										
										
										
											2018-02-08 21:28:33 -05:00
										 |  |  | program contest72 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   use packjt | 
					
						
							|  |  |  |   integer dat(12) | 
					
						
							|  |  |  |   logical text,bcontest,ok | 
					
						
							|  |  |  |   character*22 msg,msg0,msg1 | 
					
						
							|  |  |  |   character*72 ct1,ct2 | 
					
						
							|  |  |  |   character*12 callsign1,callsign2 | 
					
						
							|  |  |  |   character*1 c0 | 
					
						
							|  |  |  |   character*42 c | 
					
						
							|  |  |  |   character*6 mygrid | 
					
						
							|  |  |  |   data c/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ +-./?'/ | 
					
						
							|  |  |  |   data bcontest/.true./ | 
					
						
							|  |  |  |   data mygrid/"EM48  "/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! itype Message Type | 
					
						
							|  |  |  | !-------------------- | 
					
						
							|  |  |  | !   1   Standardd message | 
					
						
							|  |  |  | !   2   Type 1 prefix | 
					
						
							|  |  |  | !   3   Type 1 suffix | 
					
						
							|  |  |  | !   4   Type 2 prefix | 
					
						
							|  |  |  | !   5   Type 2 suffix | 
					
						
							|  |  |  | !   6   Free text | 
					
						
							|  |  |  | !  -1   Does not decode correctly | 
					
						
							|  |  |  |    | 
					
						
							|  |  |  |   nargs=iargc() | 
					
						
							|  |  |  |   if(nargs.eq.0) open(10,file='contest_msgs.txt',status='old') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   nn=0 | 
					
						
							|  |  |  |   do imsg=1,9999 | 
					
						
							|  |  |  |      if(nargs.eq.1) then | 
					
						
							|  |  |  |         if(imsg.gt.1) exit | 
					
						
							|  |  |  |         call getarg(1,msg0) | 
					
						
							|  |  |  |      else | 
					
						
							|  |  |  |         read(10,1001,end=999) msg0 | 
					
						
							|  |  |  | 1001    format(a22) | 
					
						
							|  |  |  |      endif | 
					
						
							|  |  |  |      msg=msg0 | 
					
						
							|  |  |  |      call packmsg(msg,dat,itype,bcontest) | 
					
						
							|  |  |  |      call unpackmsg(dat,msg1,bcontest,mygrid) | 
					
						
							|  |  |  |      ok=msg1.eq.msg0 | 
					
						
							|  |  |  |      if(msg0.eq.'                      ') then | 
					
						
							|  |  |  |         write(*,1002) | 
					
						
							|  |  |  |      else | 
					
						
							|  |  |  |         if(jt_c2(1:1).eq.'W') msg0='  '//msg0(1:20) | 
					
						
							|  |  |  |         nn=nn+1 | 
					
						
							|  |  |  |         write(*,1002) nn,msg0,ok,jt_itype,jt_nc1,jt_nc2,jt_ng,jt_k1,jt_k2 | 
					
						
							|  |  |  | 1002    format(i1,'. ',a22,L2,i2,2i10,i6,2i8) | 
					
						
							|  |  |  |         if(index(msg1,' 73 ').gt.4) nn=0 | 
					
						
							|  |  |  |      endif | 
					
						
							|  |  |  |      if(.not.ok) print*,msg0,msg1 | 
					
						
							|  |  |  |      if(itype.lt.0 .or. itype.eq.6) cycle | 
					
						
							|  |  |  |       | 
					
						
							|  |  |  |      if(msg(1:3).eq.'CQ ') then | 
					
						
							|  |  |  |         m=2 | 
					
						
							|  |  |  |         write(ct1,1010) dat | 
					
						
							|  |  |  | 1010    format(12b6.6) | 
					
						
							|  |  |  | !        write(*,1014) ct1 | 
					
						
							| 
									
										
										
										
											2018-08-05 11:33:30 -04:00
										 |  |  | !1014    format(a72) | 
					
						
							| 
									
										
										
										
											2018-02-08 21:28:33 -05:00
										 |  |  |         cycle | 
					
						
							|  |  |  |      endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |      i1=index(msg,'<') | 
					
						
							|  |  |  |      if(i1.eq.1) then | 
					
						
							|  |  |  |         m=0 | 
					
						
							|  |  |  |         cycle | 
					
						
							|  |  |  |      endif | 
					
						
							|  |  |  |       | 
					
						
							|  |  |  |      if(i.ge.5) then | 
					
						
							|  |  |  |         m=3 | 
					
						
							|  |  |  |         cycle | 
					
						
							|  |  |  |      endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |      if(msg(1:6).eq.'73 CQ ') then | 
					
						
							|  |  |  |         m=4 | 
					
						
							|  |  |  |         cycle | 
					
						
							|  |  |  |      endif | 
					
						
							|  |  |  |       | 
					
						
							|  |  |  |      call packmsg(msg,dat,itype,.false.) | 
					
						
							|  |  |  |      write(ct1,1010) dat | 
					
						
							|  |  |  |      call packtext(msg,nc1,nc2,ng,.false.,'') | 
					
						
							|  |  |  | !     write(ct2,1012) nc1,nc2,ng+32768 | 
					
						
							|  |  |  | !1012 format(2b28.28,b16.16) | 
					
						
							|  |  |  | !     write(*,1014) ct1 | 
					
						
							|  |  |  | !     write(*,1014) ct2 | 
					
						
							|  |  |  | !     write(*,1014) | 
					
						
							|  |  |  |   enddo | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 999 end program contest72 |