以下は、私がSASに変換する必要があるmatlabの機能です。 'value'の1行目は 'SUBID_IN_HEX'として以下に示されています。SAS 16進デコーダ
DATA WORK.QUERY_FOR_GETS_DW_EOA_FAULTS;
SET WORK.QUERY_FOR_GETS_DW_EOA_FAULTS;
SUBID_IN_HEX = SUBID ;
FORMAT SUBID_IN_HEX $hex.;
RUN;
'mask'と 'start_bit_pos'は、9つの要素で構成される配列です。私はsasには新しいので、進める方法については良いアドバイスをいただければ幸いです。
敬具、 スティーブ
function decode = get_TABS_bitpack_decoded(hex)
value = hex2dec(hex);
mask = [1 2 4 8 16 hex2dec('1fe0') hex2dec('fe000') hex2dec('3f00000') ...
hex2dec('fc000000')];
start_bit_pos = [0:5 13 20 26];
for i = 1:length(mask)
temp(i) = bitand(mask(i),value);
decode(i) = bitshift(temp(i),-start_bit_pos(i));
end
decode = decode(:);
私は、以下の更新されたコードのバージョンを持っています。配列のデコード{9}に続いてエラー124が発生します。コメント部分には、その概念を示すブルートフォース方式が示されています。ドループは究極の目標です。
もう一度、有益なコメントをいただきありがとうございます。
%macro decoderloop(SUBID_IN_HEX);
call missing(decod);
array mask{9} (1 2 4 8 16 8160 1040384 66060288 4227858432);
array start_bit_pos{9} (0:5 13 20 26);
array decod{9} (0 0 0 0 0 0 0 0 0);
/*
temp = band(mask[1],SUBID_IN_HEX);
decod[1] = BRSHIFT(temp,start_bit_pos[1]);
temp = band(mask[2],SUBID_IN_HEX);
decod[2] = BRSHIFT(temp,start_bit_pos[2]);
temp = band(mask[3],SUBID_IN_HEX);
decod[3] = BRSHIFT(temp,start_bit_pos[3]);
temp = band(mask[4],SUBID_IN_HEX);
decod[4] = BRSHIFT(temp,start_bit_pos[4]);
temp = band(mask[5],SUBID_IN_HEX);
decod[5] = BRSHIFT(temp,start_bit_pos[5]);
temp = band(mask[6],SUBID_IN_HEX);
decod[6] = BRSHIFT(temp,start_bit_pos[6]);
temp = band(mask[7],SUBID_IN_HEX);
decod[7] = BRSHIFT(temp,start_bit_pos[7]);
temp = band(mask[8],SUBID_IN_HEX);
decod[8] = BRSHIFT(temp,start_bit_pos[8]);
temp = band(mask[9],SUBID_IN_HEX);
decod[9] = BRSHIFT(temp,start_bit_pos[9]);*/
%do i = 1 %to 9;
temp = band(mask[&i],SUBID_IN_HEX);
decod[&i] = BRSHIFT(temp,start_bit_pos[&i]);
%end;
%mend decoderloop;
あなたの機能のためのいくつかのサンプル入力と期待される出力を投稿することができますか? – user667489
こんにちは、StackOverflowへようこそ。私たちはコード作成サービスではありません。あなたが必要とするものなら、コンサルタントを雇うことを歓迎します。ここで助けが必要な場合は、これを自分で解決し、具体的な質問をする必要があります。特に、これが何をしているのかを考え、SAS技術を使ってSASで試してみる必要があります。 bitパッキングは典型的なSASテクニックではありませんので、これについてはもっと良い方法があります。 – Joe